如果我在程序中有一个函数
int main(){
char *name = "New Holland";
modify(name);
printf("%s\n",name);
}
调用这个函数
void modify(char *s){
char new_name[10] = "Australia";
s = new_name; /* How do I correct this? */
}
如何用 Australia 更新字符串文字名称(现在等于 new Holland)的值。
我认为我面临的问题是new_name是本地存储,所以函数返回后,变量没有存储
最佳答案
试试这个:
#include <stdio.h>
void modify(char **s){
char *new_name = "Australia";
*s = new_name;
}
int main(){
char *name = "New Holland";
modify(&name);
printf("%s\n", name);
return 0;
}
如果您将 new_name
定义为一个数组,那么它将成为一个局部变量,而不是上面定义的一个指向字符串文字的指针。此外,在 C 中,参数是按值传递的,因此您需要将指针传递给要修改的对象。
关于c - 修改作为函数传入的字符串文字,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/14992772/