我在Objective C中有一个C数组,定义如下:
id keysArray;
然后在 if 块中,我想根据条件重新定义数组:
if (somethingIsTrue){
id keysArray[4][3];
}
else {
id keysArray[6][1];
}
然后在 if 块之外,当我访问数组时,我收到错误说不keysArray
存在。
谢谢。
我在Objective C中有一个C数组,定义如下:
id keysArray;
然后在 if 块中,我想根据条件重新定义数组:
if (somethingIsTrue){
id keysArray[4][3];
}
else {
id keysArray[6][1];
}
然后在 if 块之外,当我访问数组时,我收到错误说不keysArray
存在。
谢谢。
这是因为当您离开 if 的范围时,该范围内定义的所有局部变量都将被销毁。如果你想这样做,你将不得不使用动态分配。我不知道 Objective C 的做事方式,但在常规 C 中你应该使用 malloc。
在C
中,一旦创建,数组就不能改变大小。为此,您需要指针malloc()
和朋友。
其中C99
有一个称为“可变长度数组”(VLA)的新功能,它允许您使用在运行时定义的长度的数组(但在对象的持续时间内固定)
while (1) {
/* C99 only */
int rows = 1 + rand() % 10; /* 1 to 10 */
int cols = 1 + rand() % 10; /* 1 to 10 */
{
int array[rows][cols];
/* use array, different sizes every time through the loop */
}
}