[英]Changing pointer address - function
我的指針有問題。 這工作正常-
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”。 我知道這可能是非常愚蠢的問題,但是我不知道會發生什么以及如何解決該問題。
在您的por函數中,t不會更改。 你需要改變它
void por(char **t){
*t = *t + sizeof(char);
}
並用por(&w)調用它
嘗試這個:
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;
}
您正在增加該功能本地的副本。
聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.