1

ポインタとリファレンスを学んでいますが、概念を理解するのに苦労しています。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;
}
4

3 に答える 3

2

そこを除いて、あなたはそれを正しくやっていstatic_cast<int>ます。そこで何をしているの?そのキャストを使用した理由は何ですか?

そのキャストを取り除くと、うまくいくはずです。これ

cin >> num;

は、あなたが必要とすることすべてです。

PS C++ の用語では、初期化という用語には非常に具体的な意味があることに注意してください。正式には、初期化は常に変数定義の一部です。定義後にその変数に加えた変更は、初期化ではなくなります。あなたの場合、変数xは初期化子なしで宣言されています。つまり、変数は初期化されていない状態で(不確定な値で)開始れます。後で特定の値をxから読み取って入れますcinが、これはもはや初期化ではありません(用語の C++ の意味で)。

x次のように、確定的な初期値でyour を宣言することをお勧めします。

int x = 0;

個人的には、「ダミー」イニシャライザの大ファンではありません。

于 2012-08-28T05:19:15.663 に答える
1

をドロップする必要がありstatic_castます。

cin >> num;

std::cin の operator>>には、整数型を取るオーバーロードがあります。

関数を介して変数をまったく初期化していないことに注意してください。変数への参照を関数に渡すことで、変数に値を代入しています。

于 2012-08-28T05:19:03.033 に答える
0

ものは必要ありませんstatic_cast。関数にはへの参照intが与えられており、 を読み取りたいとしますint。変数への参照を渡したので、input関数内の変数への変更は呼び出し元に反映されます。

于 2012-08-28T05:20:13.753 に答える