Можете ли вы объяснить мне, почему первый элемент из 2 размерного массива равен 1 в этом коде?Объяснение результата кода
#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++){
printf("i=%d & j=%d\t",i,j);
p[i][j] = i + j;
printf("p[%d][%d]=%d\n",i,j,p[i][j]);
printf("this is the result of the first element %d\n",p[0][0]);
}
printf("this is the result %d\n",p[0][0]);
return 0;
}
В результате:
= 0 & J = 0 р [0] [0] = 0
это результат первого элемента 0
i = 0 & j = 1 p [0] [1] = 1
это результат первого элемента 0
= 1 & J = 0 р [1] [0] = 1
это результат первого элемента 1
= 1 & = 1 р [1] [1] = 2
это результат первого элемента 1
это результат 1
Нажмите, чтобы закрыть окно ...
Вы намеревались 'p [0]' и 'p [1]' относиться к * той же * сингулярной строке? – WhozCraig
Скорее всего, не связано с вашей проблемой, но [** не накладывает результат 'malloc()' **] (http://stackoverflow.com/a/605858/3488231). – ace