1. c语言中不定长数组是指的变长数组吗
变长数组在C++中指的是集合(也叫容器)
如vector就是
C语言中,所有的数组都不定长,没有下标越界的概念,数组实质就是一个指针(由数组名充当),因此C语言中数组的长度没有任何意义
平常在C语言中讲的不定长数组,其实就是指针。比如char *p;这句就定义了一个不定长的字符数组p(长度任意)
2. C语言数组大小是固定的为什么
数据大小的确是固定的,原因很简单,因为系统要为数组分配储存空间(只会为数组分配一次),如果不是固定的,就会出现空间容量的悬浮,造成不能存储数据的后果
3. c语言中数组元素的个数可以不固定吗
1.一维数组的定义方式为: 类型说明符 数组名 [常量表达式];
例如 int a[10];
常量表达式中可以包括常量和符号常量,不能包含变量。也就是说,c不允许对数组的大小作动态定义,
即数组的大小不依赖于程序运行过程中变量的值。
2.不过可以用宏定义来解决问题的:
#define M 20
然后在程序中定义数组a[M]
这样就可以通过改变M的数值来解决问题。
4. 为什么说c语言中的符号常量也能定义数组长度,不理解哎。。请教谢谢
不是没限制,而是限制很长,已经超过我们能使用的可承受限制。(如有的规定31个字符,有的63个字符)
而且编译器不报告错误,而是忽略超出长度限制的部分
5. c语言数组长度是定值么
在数组一章中,曾介绍过数组的长度是预先定义好的, 在整个程序中固定不变。C语言中不允许动态数组类型。例如: int n;scanf("%d",&n);int a[n]; 用变量表示长度,想对数组的大小作动态说明, 这是错误的。但是在实际的编程中,往往会发生这种情况, 即所需的内存空间取决于实际输入的数据,而无法预先确定。对于这种问题, 用数组的办法很难解决。为了解决上述问题,C语言提供了一些内存管理函数,这些内存管理函数可以按需要动态地分配内存空间, 也可把不再使用的空间回收待用,为有效地利用内存资源提供了手段。 其它文献中所提到的"动态数组",指的就是利用内存的申请和释放函数,在程序的运行过程中,根据实际需要指定数组的大小.其本质是一个指向数组的指针变量.常用的内存管理函数有以下三个:
1.分配内存空间函数malloc
2.分配内存空间函数 calloc
3.释放内存空间函数free
6. c语言中一维数组为什么一定要对长度定义,不能自动补0而二维数组就可以没有行数长度,自动补0呢
首先要明确数组的在计算机的分配方式。
计算机会分配一块《连续》的内存给数组来使用,这样就可以通过《下标》很方便的访问数组的元素。因此数组的长度就一定是要固定的,因为内存是一直在动态的分配和释放的,如果数组的长度不固定,那么数组后面的内存到底还要不要分配给别人。如果分配了,数组忽然要增加,那数组内存就不能是连续的了。
所有定义数组时可以省略的字段都是因为可以确定长度,才可以省略。不是说一维数组不能省略长度,当对数组中所有元素都初始化的时候是可以省略的。
比如int a[] = {1,2,3,4,5},这么一定可以省略长度,因为数组长度固定是5了。
而二维数组,当不初始化数组中的任何一个元素时,行列都需要制定,这样才能确定数组的大小。当初始化了其中的元素时,约定制定列数,就可以通过初始化的元素个数,算出最小的行数。
但是行列都不制定就不可以了,比如我初始化了6个元素,即可以是a[2][3]也可以是a[3][2]也可以是a[1][6],会发生歧义,是不允许的。所以二维数组的初始化必须制定一个,至于只必须制定行还是必须制定列,再C语言定义的时候大家预定俗成了制定列,所以就延续下来了。
7. C语言定义数组一定要指定大小吗
是的,c中数组定义时要指定大小。
当然,万事也不是绝对的。例如:1.作为形参的时候,可以不指定,因为在函数调用的时候,数组会转为指针的。2.当为字符串数组时,char ST[]="hello word"这儿定义了一个ST字符数值,不需要你自己去指定大小,系统会自动生成长度为11.
8. C语言定义数组时必须要标明容量吗想要容量可变怎么办
因为编译器要为数组分配存储空间,所以一定要标明数组大小;
因为在程序内不能实现容量可变,所以定义数组时一般要预留够空间(C语言这方面也比较宽容,数组元素溢出一般不会报错);
想要容量可变要用别的数据结构~建议你学学链表等其他数据结构~
希望能够对你有帮助~
9. 为什么数组的长度一定要是常量
计算机要求在给数组分配空间的时候知道你要分配多大,
你说的是静态数组,因为这些数组在编译的时候就已经得让计算机知道了,所以必须是常数。
另外一种是动态数组
在c++ 里面可以
int n=10;
int *arr = new int[n];
这样可以在执行的时候才告诉计算机你要的数组长度(动态数组)
依然没有改变上面说的那个原则,你必须在申请数组的时候明确告诉系统你要的数组的长度
10. 求教,C语言变长数组。
C语言没有变长数组,只有定长数组,所以数组长度不能用常量指定