3

これはおそらく非常に初歩的な問題ですが、どこにも答えが見つかりません。C で数週間プログラミングを行った後、この問題に遭遇したのはこれが初めてです。本質的に、次のようなコードを記述した場合:

int size;
scanf("%d", &size);
printf("size is %d", &size);

たとえば、サイズ = 2 と入力すると、プログラムは 133692 または同様の数値の行に沿って何かを出力します。どうしてこれなの?ここで私は何を間違えましたか?

4

5 に答える 5

3

試す

printf("size is %d", size);

&変数のメモリ位置 (アドレス) を示します。

printf("size is %d", &size);

したがって、上記は にsize格納されている値ではなく、のメモリ位置 (アドレス) を出力しsizeます。

于 2012-11-17T16:31:50.510 に答える
1

あなたがしなければなりません:

printf("size is %d", size);

代わりは。intこれにより、オブジェクトの値が出力されますsize

しかし

 printf("size is %d", &size);

未定義の動作です。

于 2012-11-17T16:27:50.190 に答える
0

のアドレスsize、つまり を出力してい&sizeます。

プレーンを渡すだけsizeです。

于 2012-11-17T16:27:56.173 に答える
0

--> アドレスを出力するので&printfステートメント内の を削除します。&size

      printf("size is %d", size);
于 2012-11-17T16:28:46.420 に答える
0

The calling conventions are different in printf, and scanf.

Printf's arguments are typically by value (no &), but scanf has to have pointers. (&)
(You can't put a new value to e.g. 1.0, but you can print it...)

于 2012-11-17T16:29:00.930 に答える