首页 诗词 字典 板报 句子 名言 友答 励志 学校 网站地图
当前位置: 首页 > 教程频道 > 开发语言 > C语言 >

关于变长数组 c中为什么不能定义成全局变量

2014-01-23 
关于变长数组 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里是变长数组, 是不允许的.

热点排行