这是我的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*
声明后没有任何值,如何更改 a 的值char*
传递给函数?
在 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()
. See: 如何利用格式字符串漏洞? https://stackoverflow.com/q/7459630/1275169
本文内容由网友自发贡献,版权归原作者所有,本站不承担相应法律责任。如您发现有涉嫌抄袭侵权的内容,请联系:hwhale#tublm.com(使用前将#替换为@)