谁能解释我在这里做错了什么不能得到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)
如果我们调用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)