我似乎无法理解为什么这个代码打印1作为答案。 我正在学习C语言,这是作业的一个问题。 有人可以解释一下吗?我不明白这个代码片段在C
#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",p[0][0]);
return 0;
}
在我看来应该打印0,但它似乎我错了。
*它会返回什么? –
请注意,'p [0]'和'p [1] [0]'是同一个对象,因为'p [1]'指向与p [0]相同的地址。 –
它返回值1. – cstoica