更改指针地址 - 功能

时间:2011-11-15 13:49:40

标签: c function pointers function-pointers pointer-address

指针有问题。 这很好用 -

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

3 个答案:

答案 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)

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