gpt4 book ai didi

objective-c - 不同的 C 数组声明

转载 作者:行者123 更新时间:2023-11-30 18:59:14 25 4
gpt4 key购买 nike

Possible Duplicate:
sizeof array clarification

我声明了 2 个数组

GLfloat gCubeVertexData[216] = { list of numbers};

并声明一个数组:

GLfloat *resultArray = malloc(sizeof(GLfloat) * [arrayOfVerticies count]);

for(int i = 0; i < [arrayOfVerticies count]; i++)
{
resultArray[i] = [[arrayOfVerticies objectAtIndex:i] floatValue];

}

为什么我这样做时会出现sizeof(gCubeVertexData)我得到 864(GLflot 是 4 位,因此除以 4,得到 216)

当我这样做时sizeof(resultArray)我得到4个?不过,如果我打印出 resultArray[100] ,我会得到正确的数字,并且存储的数字远远多于 4 个?

最佳答案

因为gCubeVertexData是一个数组,而resultArray是一个指针。对于数组,编译器知道需要为数组分配多少字节,因此它明确知道大小(对于 C99 中的变长数组,也可以在运行时轻松计算,也许通过弄乱堆栈指针)。

但是,在 malloc() 的情况下,编译器不知道指针指向的内存大小(该大小可以通过非标准且与平台相关的方式获得)无论如何……),所以它只返回变量本身的大小,在本例中它是一个指针,所以你会得到sizeof(GLfloat *)最后。

关于objective-c - 不同的 C 数组声明,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/13070242/

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