[ad_1]
私はcが初めてです。 i の値を変更する必要があると考えていますが、実際には変更されていません。
f関数では:
C
void f(int *p, int a) { p = &a; }
主な機能:
C
int main() { int i = 10, j = 20; change(&i, j); printf("%d", i); return 0; }
ポインタ変数を引数として渡した後でも、i の値が 10 のままなのはなぜですか。 値渡しとして動作するのはなぜですか。
私が試したこと:
頭から離れて助けてください。 理解に苦しみます。
解決策 1
シンプル:あなたは電話しない f
そのコードではまったく。
という関数を呼び出します change
– しかし、そのためのソース コードがないため、コードがコンパイルされない可能性が非常に高いです。 コンパイルされない場合、EXE ファイルは生成されないため、実行する EXE にはソース コードへの最新の変更が反映されません。
したとしても、あなたは何を変えません p
ポイント: ローカル パラメータ変数に新しい値を設定します。 p
これは、C ではすべてのパラメーターが値で渡されるため、「外の世界」には反映されません。実際の変数ではなく、渡された値のコピーが作成されます。
これを試して:
C
#include <stdio.h> void f(int *p, int a) { *p = a; } int main() { int i = 10, j = 20; f(&i, j); printf("%d", i); return 0; }
次に、次のアドレスを渡します i
関数に追加し、それが指す変数の値を変更すると、出力される結果が変わります。
[ad_2]
コメント