#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函数中修改;返回类型的更改函数应保持无效。我不知道该怎么做。
我确实尝试谷歌但我没有找到解决方案。
答案 0 :(得分:4)
在C中,如果要将参数的值更改为函数,则需要通过指针获取该参数。因为在这里你试图改变一个指针,它需要是一个指向指针的指针:
void change(char **str)
{
(*str)++;
}
然后:
change(&str);
答案 1 :(得分:0)
表达式(*str++);
会从str
增加str
的本地副本,而非main
。这是因为C对函数参数使用按值传递技术。
您需要更改函数以获取指针指针,并将指针传递给str
以获得所需效果。
答案 2 :(得分:0)
因为我们在C中你需要一个指向指针的指针。
即
void change(char **str)
{
*str = *str + 1;
}
然后
int main()
{
char *str = "ABC";
printf("before change %s \n",str);
change(&str);
printf("after change %s \n",str);
return 0;
}