这是我的main.c
:
#include <stdio.h>
void changeStuff(char *stuff){
stuff= "Hello everyone";
}
int main(int argc, char **argv) {
char *stuff;
changeStuff(stuff);
printf(stuff);
return 0;
}
当我构建这个时,我收到了这个警告:
warning: ‘stuff’ is used uninitialized in this function [-Wuninitialized]
当我运行此程序时,没有打印任何内容。
由于在声明之后似乎无法定义没有值的char*
,如何更改传递给函数的char*
的值?
答案 0 :(得分:3)
在C中,函数参数是按值传递的。要修改指针值,需要将指针传递给指针,如:
#include <stdio.h>
void changeStuff(char **stuff){
*stuff= "Hello everyone";
}
int main(int argc, char **argv) {
char *stuff;
changeStuff(&stuff);
printf("%s\n", stuff);
return 0;
}
请注意,将用户定义的值直接传递给printf()
并不是一个好主意。请参阅:How can a Format-String vulnerability be exploited?