关于变长数组 c中为什么不能定义成全局变量
关于变长数组 c中为何不能定义成全局变量?#includestdio.hconst int maxn10int f[maxn]int main(){re
关于变长数组 c中为何不能定义成全局变量?
#include<stdio.h>
const int maxn=10;
int f[maxn];
int main()
{
return 0;
}
这样在c语言中为何不可以? c99支持变长数组了啊~~
而保存成.cpp 就可以。。为什么。。
[解决办法]C99定义的这种变长数组的使用是有限制的,不能像在C++等语言中一样自由使用
变长数组有以下限制:
1、变长数组必须在程序块的范围内定义,不能在文件范围内定义变长数组;
2、变长数组不能用static或者extern修饰;
3、变长数组不能作为结构体或者联合的成员,只能以独立的数组形式存在;
4、变长数组的作用域为块的范围,对应地,变长数组的生存时间为当函数执行流退出变长数组所在块的时
你是放在文件块范围内定义了,放到函数内部定义就可以了。
[解决办法]第一个问题:
c/c++中全局变量的存储空间是编译器分配的, 不是在运行期分配的, 大小必须在编译期能确定, 因此变长数组不能是全局变量. 2楼说的几种情况都同理.
第二个问题:
const在c++里是常量, 在c里是只读变量.
因此这个定义在c++里是固定长度的全局数组变量, 是允许的; 在c里是变长数组, 是不允许的.