指针有问题。 这很好用 -
int main(void){
char *w;
w = calloc(20, sizeof(char));
w = "ab";
printf("%c",*w);
w = w + sizeof(char);
printf("%c",*w);
return 0;
}
但如果我使用的功能如下:
void por(char *t){
t = t + sizeof(char);
}
和
int main(void){
char *w;
w = calloc(20, sizeof(char));
w = "ab";
printf("%c",*w);
por(w);
printf("%c",*w);
return 0;
}
然后打印“aa”而不是“ab”。 我知道它可能是非常愚蠢的问题,但我不知道将要发生什么以及如何解决这个问题。
答案 0 :(得分:4)
在你的por函数中,t不会被改变。你需要改变它
void por(char **t){
*t = *t + sizeof(char);
}
并用por(& w)
调用它答案 1 :(得分:1)
试试这个:
static char *por(char *t)
{
return t + sizeof(char);
}
int main(void)
{
char *w = "ab";
printf("%c",*w);
w = por(w);
printf("%c",*w);
return 0;
}
答案 2 :(得分:0)
您正在递增函数本地的副本。