1

我正在学习指针和参考,但我无法掌握这个概念。我需要在我的主函数中声明一个变量,然后通过用户输入通过函数对其进行初始化,而不返回任何内容。我试过了:

#include <iostream>
using namespace std;

void input(int &num){
   cout << "Enter A Number" << endl;
   cin >> static_cast<int>(num);
}
int main(){
   int x;
   input(x);
   cout << "The Number You Entered Was " << x << "!" << endl;
   return 0;
}
4

3 回答 3

2

你做对了,除了static_cast<int>那里。它在那里做什么?是什么让你使用这个演员阵容?

摆脱那个演员阵容,它应该可以工作。这

cin >> num;

是你所需要的全部。

PS请记住,在 C++ 术语中,术语初始化具有非常特定的含义。形式上,初始化始终是变量定义的一部分。定义后对该变量所做的任何更改都不再是初始化。在您的情况下,变量x声明时没有初始化,这意味着它的生命开始时未初始化(具有不确定的值)。稍后您x通过从 中读取某些特定值cin,但这不再是初始化(在 C++ 术语的含义中)。

x用一些确定的初始值声明你可能是个好主意,比如

int x = 0;

虽然我个人不是“虚拟”初始化程序的忠实粉丝。

于 2012-08-28T05:19:15.663 回答
1

你应该放弃static_cast.

cin >> num;

std::cin 的 operator>>具有采用整数类型的重载。

请注意,您根本没有通过函数初始化变量。您通过将变量的引用传递给函数来为变量赋值。

于 2012-08-28T05:19:03.033 回答
0

不需要这些static_cast东西。您的函数获得了对 an的引用int,而您想要读取int. 由于您已经传递了对变量的引用,因此在您的input函数中对其所做的更改将反映在调用者中。

于 2012-08-28T05:20:13.753 回答