我似乎無法理解爲什麼這個代碼打印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