有人可以解释为什么当我运行下面的短代码片段时变量 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);
}
我知道我可能错过了一些非常简单的东西。我只是不明白为什么 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);
}
事情按预期工作。
提前致谢。