C语言中可以定义不定长度的数组(即数组长度由变量确定)吗?

如题所述

不可以,数组在创建时长度已经确定了,而且创建后也无法更改数组的长度,楼上说的malloc动态申请的内存也是已确定的,你都不能在 不破坏原有数据的情况下改变其大小。
那怎么储存未知大小的数据呢,在储存后怎样能随意的对其添加、更改、删除、查找等一系列操作呢?只用简单的数组肯定不行,需要用到别的数据结构,如链表、二叉树等等,总有一款适合你。在大家学到数据结构与算法的时候 ,一切难题都将迎刃而解。
最后补充一点,楼上有人说数组的长度不能用变量来确定,这是错误的。 C中有 变长数组 的概念呀(c99标准),“变长”的意思就是 可以用变量来指定数组的长度,而数组一旦创建 长度就无法变化了,而且变量必须赋值在先,变长数组才能创建。某些人不能因为无法正确的设置编译器支持c99标准,而否定了 变长数组 这个用法。
温馨提示:答案为网友推荐,仅供参考
第1个回答  2012-04-27
可以使用指针,申请动态空间,完成这个操作,具体的东西,你可以查资料,或者看书,一般的C语言书上都有说明,而且肯定比我们讲的详细的多
第2个回答  2012-04-27
数组下标只能是确定的数,不可以用数组
用指针可以,用的时候就申请内存空间
看看malloc他的用法
第3个回答  2012-04-29
一维数组定义方式为: 类型说明符 数组名【常量表达式】,常量表达式可以包括常量和符号常量,但绝不能包含变量。换句话说,C语言中不允许对数组的大小做动态定义,即数组的大小不依赖程序运过程中变量值;如:
int n;
scanf("%d",&n);
int a[n];
这是不对的!!!!
第4个回答  2012-04-29
有啊,可以看下动态分配内存空间
相似回答