Я не понимаю, почему код ниже изменяет массив b
:
int a[] = { 3, 6, 9 };
int b[] = { 2, 4, 6, 8, 10 };
int **c;
int **d[2];
c = (int **)malloc (b[1] * sizeof(int *));
*c = &a[1];
c[1] = c[0] + 1;
*d = c;
c = c + 2;
*c = b;
c[1] = &c[0][3];
*(d + 1) = c;
d[0][3][1] = d[1][0][0];
d[1][0][2] = d[0][1][0];
Я запустил этот код и нашел значения массива a
и массива b
, но яне в состоянии понять, как получаются эти значения.
Массив a
остается неизменным, пока b
становится 2, 4, 9, 8, 2
.Как это произошло?
c = (int**)malloc(b[1] * sizeof(int*)); //int **c[4] ???
c
- это массив двойных указателей *c = &a[1]
это означает, что c[0]
имеет адрес второго индекса массива a.Я не понимаю, как это интерпретировать.