我正在创建一个C
永远不会改变的已知大小的数组。以下两个初始化器有什么区别?
1.
GLuint boxArray[36];
for (GLuint i=0; i<36; i++)
{
boxArray[i] = i;
}
2.
GLuint boxArray[] = {0,1,2,3,4,5,6,7,8,9,10,11,12,13,14,15,16,17,18,19,20,21,22,23,24,25,26,27,28,29,30,31,32,33,34,35};
当我换出上面的两种方法时,只有第一种在我的代码中有效。检查数组本身看起来非常相似(唯一的区别是第二种方法的两个元素 PAST 数组末尾的值为零)。
我正在使用以下代码在创建数组后检查它...
for (int j=0; j<39; j++) {
NSLog(@"boxArray[%d] = %d", j, boxArray[j]);
}
两个输出都是相同的,只是上面的细微差别。我故意写到数组的末尾以检查那里的差异。
然后我将数组填充到一个 NSData 对象中,该对象是该代码所在的对象的实例变量......就像这样......
_boxArrayData = [NSData dataWithBytes:boxArray length:sizeof(boxArray)];
当我从 NSData 对象中提取数据时,我可以检查另一端的数据,并且它在那里看起来也一样。但是,当我使用数据(它是 OpenGLES2.0 的简单索引数组)时,我会得到不同的结果。