我试图了解打印代码时发生了什么。
我知道p[0]并且p[1]指向相同的东西,如果p[1]它有自己的 malloc,p[0][0]会导致 0,但它会导致 1。
我试图了解是什么导致它导致 1。所以这段代码的结果是:
1
2
1
2
但我不确定如何。
编码:
#include <stdio.h>
#include <stdlib.h>
int main(void) {
int i,j;
int **p = (int **)malloc(2 * sizeof(int *));
p[0] = (int *)malloc(2 * sizeof(int));
p[1] = p[0];
for(i = 0; i < 2; i++)
for(j = 0; j < 2; j++)
p[i][j] = i + j;
printf("%d\n",p[0][0]);
printf("%d\n",p[0][1]);
printf("%d\n",p[1][0]);
printf("%d\n",p[1][1]);
return 0;
}