通过函数初始化变量
Initializing Variable Through Function
我正在学习指针和参考资料,但我无法掌握这个概念。我需要在我的 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;
}
你做对了,除了那里的那个static_cast<int>
。它在那里做什么?是什么让你使用这个演员表?
摆脱那个演员表,它应该可以工作。这
cin >> num;
是你所需要的一切。
附言请记住,C++术语中,术语初始化具有非常具体的含义。从形式上讲,初始化始终是变量定义的一部分。定义后对该变量所做的任何更改都不再是初始化。在您的情况下,变量 x
是在没有初始值设定项的情况下声明的,这意味着它以未初始化的方式开始其生命周期(具有不确定的值(。稍后你通过从cin
读取一些特定的值来x
,但这不再是初始化(在术语C++含义中(。
最好用一些确定的初始值声明您的x
,例如
int x = 0;
虽然我个人不是"虚拟"初始化器的忠实粉丝。
你应该删除static_cast
。
cin >> num;
std::cin的运算符>>具有采用整型类型的重载。
请注意,您根本不是通过函数初始化变量。通过将对变量的引用传递给函数,为变量赋值。
不需要
static_cast
的东西。你的函数被赋予了一个对int
的引用,并且你想读取一个int
。由于已传递对变量的引用,因此在 input
函数中对变量所做的更改将反映在调用方中。
相关文章:
- 为什么C++有不同的变量初始化方式?
- 静态 constexpr 成员变量初始化
- C++不同的变量初始化
- 全局和局部变量初始化与 constexpr 的差异背后的基本原理
- 是变量初始化失败吗?
- 视觉C++:在 DLL 加载期间,全局变量初始化顺序是否具有确定性?
- 类静态变量初始化顺序
- 使用 constinit 变量初始化 constexpr 变量
- 是否可以在不修改父类的情况下将成员变量初始化推迟到继承的类?
- 使用全局变量初始化不同编译单元中的其他全局变量
- 使用默认构造函数引用成员变量初始化错误
- 宏的 if 语句中的变量初始化
- 不稳定的C :每行适应性变化多变量初始化
- 同一函数中的静态函数变量初始化顺序
- C 语言中的静态变量初始化
- 错误:调用'begin(long double [nPoints])'没有匹配函数;使用硬编码的 int 与整数变量初始化向量
- 类POD成员变量初始化
- 尝试捕获类变量初始化的范围
- 共享库中 __attribute__((构造函数)) 的全局/静态变量初始化问题
- 多变量初始化编译器支持