通过函数初始化变量

Initializing Variable Through Function

本文关键字:变量 初始化 函数      更新时间:2023-10-16

我正在学习指针和参考资料,但我无法掌握这个概念。我需要在我的 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 函数中对变量所做的更改将反映在调用方中。