Я не совсем понимаю, как работают указатели с массивами Си. Вот код, который я получил:
int arrayOne[] = {1, 2, 3};
int arrayTwo[] = {4, 5, 6, 7};
int **arrayThree = (int **)malloc(2 * sizeof(int));
arrayThree[0] = arrayOne;
arrayThree[1] = arrayTwo;
for (int i = 0; i < 2; i++) {
int *array = arrayThree[i];
int length = sizeof(array) / sizeof(int);
for (int j = 0; j < length; j++)
printf("arrayThree[%d][%d] = %d\n", i, j, array[j]);
}
Я бы ожидал, что это выведет следующее:
arrayThree[0][0] = 1
arrayThree[0][1] = 2
arrayThree[0][2] = 3
arrayThree[1][0] = 4
arrayThree[1][1] = 5
arrayThree[1][2] = 6
arrayThree[1][3] = 7
То, что он на самом деле печатает:
arrayThree[0][0] = 1
arrayThree[0][1] = 2
arrayThree[1][0] = 4
arrayThree[1][1] = 5
Почему?!