入力 C (scanf) を取得しているときに、変数自体の名前ではなく、変数のメモリ位置を取得することを好む特定の理由はありますか? 上記を義務付けるscanfの定義を知っていますか?しかし、特別な理由はありますか?C++ のように、入力を取得したい場合は、cin>>var; と記述します。しかし、なぜではないのですか?言語を速く保つためのものですか?
質問する
174 次
2 に答える
5
これは、C の関数への値が valueで渡されるためです。もちろん、コンパイルされた言語であるため、変数の名前は実行時に存在しません。その時点ではすべてメモリ内のアドレスです。
変数を直接渡す場合は、printf()
必要なものである値を渡すだけです。
int a = 32;
printf("a=%d\n", a);
scanf()', it would just get the integer value
ただし、 32 , with no idea where it came from. Since the point of
scanf()` で同じことを行って呼び出し元の変数の値を変更する場合は、変数のアドレスを渡します。
int a = 32;
scanf("%d", &a);
次に、内部のコードscanf()
は、指定されたアドレスに新しい整数値を書き込むことができます。これにより、値が で変更されa
ます。
于 2013-06-22T12:33:35.610 に答える
1
scanf() がそのアドレスにデータを書き込むことができるように、scanf() への参照によって変数を渡す必要があります。
于 2013-06-22T12:32:54.093 に答える