(第一次评论后更新问题)
int max_size = 20;
int h[max_size];
当使用max_size初始化时,调试为h提供[-1]的值;
相反,我使用整数初始化。所以代码是:int h[20]
,它运行正常。
这是在Mac OS X 10.6上使用GCC 4.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));