在没有NSArray.n的情况下在目标c中声明整数数组

时间:2010-09-27 22:12:01

标签: objective-c

(第一次评论后更新问题)

int max_size = 20;
int h[max_size];

当使用max_size初始化时,调试为h提供[-1]的值;

相反,我使用整数初始化。所以代码是:int h[20],它运行正常。

这是在Mac OS X 10.6上使用GCC 4.2。

2 个答案:

答案 0 :(得分:2)

我刚刚编译并运行了包含您的代码的以下程序:

#import <Foundation/Foundation.h>

int main() {
    int max_size = 20;
    int h[max_size];

    h[0] = 5;
    NSLog(@"It is %d", h[0]);

    return 0;
}

工作得很好。问题不仅仅是声明一个数组。

这是在Mac OS X 10.4上使用GCC 4.0.1。

答案 1 :(得分:0)

如果我没记错的话,有些编译器需要在编译时明确知道堆栈分配数组的大小。这(可能)就是这种情况,你可以使你的max_size变量const或#define宏(或整数文字,就像你所做的那样。)或者,你可以动态分配数组然后大小可能是任何旧的变量

例如:

int *array = calloc(max_size, sizeof(int));