如何在C/C++中数组的下标使用变量

如题所述

对于ANSI 标准C及C++,这都是标准没有定义的,也就是说,最好认为不可以用变量代入数组个数

C99标准中加入了这个特性,但C99标准还未流行。

对于C++编译器,gcc扩充了这个功能,但是它未被标准支持所以这样的程序是不具备编译可移植性的。早期的vc++6.0不支持此特性。

但是你若在c++中定义const int n = 5;
则可以int a[n];
因为c++中,const型变量是作为编译时常量的。
但在ANSI C中却不行,因为C中const型变量是作为只读的变量出现的,所以不能用其定义数组个数

虽然在汇编的角度看,int a[n];这种语句即使n是变量,也是很好实现的,但c/c++出于多种考虑(例如n的不确定性以及楼上提到的一点原因)拒绝了它

要模拟动态数组,最好使用new,malloc类似函数动态分配内存,这样的程序才是最安全的。

数组的引用下标可以是变量常量追问

我要的是解决方案,C语言中没有malloc 函数

追答

C语言怎么没有malloc,使用时包含malloc.h

温馨提示:内容为网友见解,仅供参考
第1个回答  2013-08-05
声明数组时不能使用变量座位下标,在引用数组元素时可以使用变量,如上所示.
第2个回答  推荐于2016-11-09
char a[100];
for(i=0;i<100;i++)
{
a[i]=i;
}追问

int n;
int array[n], after[n];
char flag[n];

shu ru fa you wen ti le , ru he xiang zhe yang zi qi ta zhong lei shi de ye xing

本回答被提问者采纳
相似回答