我不太明白指针是如何与c数组一起工作的。这里有一些代码:
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
为什么?啊!
最佳答案
sizeof(array)
是指针的大小,刚好是平台上int
大小的两倍。
在c中没有办法得到数组的长度。你只需要自己记住它。