通过函数初始化变量

时间:2012-08-28 05:16:36

标签: c++ pointers reference

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

#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;
}

3 个答案:

答案 0 :(得分:2)

您正在正确执行此操作,但static_cast<int>除外。它在那做什么?是什么让你使用那个演员?

摆脱那个演员,它应该工作。此

cin >> num;

就是你所需要的一切。

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

int x = 0; 声明为具有某些确定的初始值可能是个好主意,例如

{{1}}

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

答案 1 :(得分:1)

您应该删除static_cast

cin >> num;

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

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

答案 2 :(得分:0)

不需要static_cast的东西。您的函数会向int提供引用,并且您想要阅读int。由于您已经传递了对变量的引用,因此input函数中对它的更改将反映在调用者中。