1

次のステートメントのペアの違いは何ですか?

   int i;
   doSomethingWith(i);

   int i;
   doSomethingWith(&i);
4

3 に答える 3

4

C では、& はアドレス取得演算子です。したがって、最初の呼び出しで行うように のコピーを渡す代わりに、 、またはiのアドレスを渡します。これは、関数がそれを直接変更できることを意味します。i&i

関数は次のようになります。

void doSomethingWith (int *var);

これは、整数 (この場合は ) へのポインター (アドレスを保持するもの) を取ることを意味しますi。次に、直接変更iするには、関数で次のことができます。

*var = 5;

これは逆参照演算子であり、そのアドレスに実際に格納されているものを提供します。この呼び出しは、&i で渡すメモリ位置に格納されているものに 5 を割り当てます。

C の教科書では、ポインターについて説明するときに、これについて詳しく説明する必要があります。

于 2012-04-15T19:53:02.217 に答える
2

最初に、iの値を渡します。2番目に、変数iのアドレスをメモリに渡します。

ポインタとそのようなものについてのこのビデオを見てください。

于 2012-04-15T19:50:44.203 に答える
0
  • 'i' を渡す --> i の値 (メモリ内の値) を渡す
  • '&i' を渡す --> 'i' のメモリ位置への参照を渡す
于 2012-04-15T19:58:42.170 に答える