以下の短いコードスニペットを実行しても、変数testの値が変更されない理由を誰かが説明できますか?
#include <stdio.h>
int f1(char * foo) {
*foo = 'a';
return 0;
}
void main(void) {
char test = 'n';
printf("f1(&test)=%d. test's new value? : %c", f1(&test), test);
}
私はおそらく本当に単純なものが欠けていることを知っています。f1()でアドレスを渡したので、なぜテストが変更されないのかわかりませんよね?printf()の引数のリストで実際の関数呼び出しが発生することが重要なのはなぜですか?
次のように、printf引数リストからf1()の呼び出しを取得すると、次のようになります。
#include <stdio.h>
int f1(char * foo) {
*foo = 'a';
return 0;
}
void main(void) {
char test='n';
int i;
i = f1(&test);
printf("f1(&test)=%d. test's new value? : %c", i, test);
}
物事は期待どおりに機能します。
前もって感謝します。