gpt4 book ai didi

C - 动态数组

转载 作者:太空狗 更新时间:2023-10-29 15:45:28 27 4
gpt4 key购买 nike

我不太明白指针如何与 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 中无法获取数组的长度。您只需要自己记住即可。

关于C - 动态数组,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/5221094/

27 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com