0

我的指针有问题。这工作正常 -

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”。我知道它可能很愚蠢的问题,但我不知道发生了什么以及如何解决这个问题。

4

3 回答 3

4

在您的 por 函数中, t 不会更改。你需要改变它

void por(char **t){
 *t = *t + sizeof(char);
}

并用 por(&w) 调用它

于 2011-11-15T14:01:14.163 回答
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;
}
于 2011-11-15T14:06:22.903 回答
0

您正在增加函数本地的副本。

于 2011-11-15T15:09:47.887 回答