2

この質問はばかげているように見えるかもしれませんが、それは人々が学ぶ方法です:)私はあなたがcin>>でint変数を参照することを心配する必要がないC++を学びました。今日、私は学校の仕事のためにCでファイル処理を学んでいましたが、この構文でプログラムを実行しようとすると、エラーが発生しました。

scanf("%d\n %s\n",id, name);

しかし、scanfでidを参照すると、エラーはなくなりました。

scanf("%d\n %s\n",&id, name);

なんでそうなの?このnoobの質問に答えてくれてとても感謝しています。

4

4 に答える 4

1

scanfのアドレスが必要なidので、そこに値をスキャンして保存します。最初のケースで与えられる現在の値には関心がありません。

于 2012-09-08T14:00:29.853 に答える
1

scanfは、変数へのポインターを期待する関数であり、ポインターが指す場所に読み取った値を格納できるようにします。

nameおそらくある種の(char?)配列であるため、その変数の識別子はすでにアドレスを参照しているため、&演算子は必要ありません。ただし、変数(ある種の変数であるintと想定しています)の場合は、呼び出しで渡すアドレスを取得する必要があります。idintscanf

于 2012-09-08T14:00:39.543 に答える
0

scanfはC関数です。Cには参照がないため、変数scanfを変更するには、その変数の場所へのポインターを渡す必要があります。C ++には参照があるため、ポインターは必要ありませんが、ポインターを使用することもできます。

于 2012-09-08T14:02:18.860 に答える
0

scanf()には、データを格納する変数のアドレスが必要です。

整数の場合、整数変数のアドレスを参照するには「」記号が必要です。ただし、文字列の場合、文字列はすでに文字配列へのポインタであるため、 「 」を使用する必要はありません。

于 2012-09-08T14:10:23.643 に答える