我正在学习指针和参考资料,但我无法理解这个概念。我需要在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;
}
答案 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
函数中对它的更改将反映在调用者中。