1

我在Objective C中有一个C数组,定义如下:

id keysArray;

然后在 if 块中,我想根据条件重新定义数组:

if (somethingIsTrue){
    id keysArray[4][3];
}
else {
    id keysArray[6][1];
}

然后在 if 块之外,当我访问数组时,我收到错误说不keysArray存在。

谢谢。

4

2 回答 2

2

这是因为当您离开 if 的范围时,该范围内定义的所有局部变量都将被销毁。如果你想这样做,你将不得不使用动态分配。我不知道 Objective C 的做事方式,但在常规 C 中你应该使用 malloc。

于 2010-09-17T10:45:11.473 回答
1

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 */
    }
}
于 2010-09-17T10:49:33.130 回答