c++ - 通过函数初始化变量

标签 c++ pointers reference

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

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

就是你所需要的。

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

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

int x = 0;

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

关于c++ - 通过函数初始化变量,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/12153155/

相关文章:

c - 指向数组类型的指针(自定义类型)

c++ - QHostAddress 的段错误

c++ - Crypto++ Code::blocks undefined reference 问题

c - 如何在 C 中将 union 指针作为参数传递? union 的内部是什么?

c++ - 删除后内存泄漏 []

php - 为什么 php 在引用一个不存在的变量时不报错?

c++ - 构造函数语法缺少形式参数

c++ - 如何检查我的程序是否有数据通过管道传输到其中

c++ - 如何修复此类模板

c++ - 在 C 代码中使用 boost::bind() 会起作用吗?