我是 C 语言新手。上周,我学习使用数组来解决问题。我发现当数组的数量太大时,比如1024*1024,它会显示错误。有些人建议我使用 static 来解决它,但是这个错误(标题)让我更加困惑。我想我已经定义了参数,它应该是不变的。但事实并非如此。我无法理解。
Summary:
- 为什么会发生这个错误?
- 为什么常数在C中不是常数?
- 我怎样才能在不使用 ture 常数(例如 5000)的情况下解决这个问题?
- 什么函数可以代替static来存储大数组?
这是文本代码,显示相同的错误
# include <stdio.h>
int main()
{
int num = 500;
static int arr[num] = {0};
printf("%d",arr[0]);
return 0;
}
一个数组静态存储时间,即在文件范围或使用static
关键词,must其大小是编译时间常数。变量的值不是编译时常量,这就是您收到错误的原因。
将有问题的变量声明为const
也没有资格,因为它只是意味着该变量不能被修改,而不是它是一个编译时常量。
您可以做的就是使用预处理器符号作为常量。这将在编译器运行之前被替换。
#define NUM 500
static int arr[NUM] = {0};
本文内容由网友自发贡献,版权归原作者所有,本站不承担相应法律责任。如您发现有涉嫌抄袭侵权的内容,请联系:hwhale#tublm.com(使用前将#替换为@)