【发布时间】:2016-07-10 11:59:33
【问题描述】:
#include <stdio.h>
void change(char *str)
{
(*str++);
return;
}
int main()
{
char *str = "ABC";
printf("before change %s \n",str);
change(str);
printf("after change %s \n",str);
return 0;
}
程序的输出是
ABC
ABC
我希望输出是
ABC
BC
我不想返回字符串,str需要在change函数中修改;更改函数的返回类型应保持无效。我不知道该怎么做。
我确实尝试谷歌它,但我没有找到解决方案。
【问题讨论】:
-
您正在传递指针按值,这意味着
change函数内的局部变量str是原始的副本指针。更改副本不会更改原件。要么返回新指针,要么搜索并阅读关于在 C 中模拟通过引用传递。 -
我只是按值和按引用搜索指针,清除了很多关于双指针的疑问。感谢您的评论。