为什么整数在此代码中不递增?

ran*_*its 1 c

谁能解释我在这里做错了什么不能得到11作为我的输出?

void foo {
    int *n = malloc(sizeof(int)); 
    *n = 10; 
    n++;
    printf("%d", *n)
}
Run Code Online (Sandbox Code Playgroud)

Jam*_*lis 25

n++递增指针n,而不是指向的整数n.要递增整数,您需要取消引用指针,然后递增该结果:

(*n)++;
Run Code Online (Sandbox Code Playgroud)

  • @Matt:是的; 我刚刚看到了.我的大脑和手指之间肯定有一个总线错误.:-) 谢谢. (2认同)

Art*_*ius 9

如果我们调用malloc'ed变量x,那么你的程序会这样做:

                                      n     x
int *n = malloc(sizeof(int));        &x     ?
*n = 10;                             &x    10
n++;                                &x+1   10
Run Code Online (Sandbox Code Playgroud)

你想这样做:

                                      n     x
int *n = malloc(sizeof(int));        &x     ?
*n = 10;                             &x    10
(*n)++;                              &x    11
Run Code Online (Sandbox Code Playgroud)