0

入力 C (scanf) を取得しているときに、変数自体の名前ではなく、変数のメモリ位置を取得することを好む特定の理由はありますか? 上記を義務付けるscanfの定義を知っていますか?しかし、特別な理由はありますか?C++ のように、入力を取得したい場合は、cin>>var; と記述します。しかし、なぜではないのですか?言語を速く保つためのものですか?

4

2 に答える 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 ofscanf()` で同じことを行って呼び出し元の変数の値を変更する場合は、変数のアドレスを渡します。

int a = 32;
scanf("%d", &a);

次に、内部のコードscanf()は、指定されたアドレスに新しい整数値を書き込むことができます。これにより、値が で変更されaます。

于 2013-06-22T12:33:35.610 に答える
1

scanf() がそのアドレスにデータを書き込むことができるように、scanf() への参照によって変数を渡す必要があります。

于 2013-06-22T12:32:54.093 に答える