
正文
c语言数组可以么定义多长,数组c语言怎么定义
提示:扫一扫查出行【扫一扫了解最新限行尾号】
复制提示
C语言中数组长度不能用变量定义吗?
1、不可以,数组在创建时长度已经确定了,而且创建后也无法更改数组的长度,楼上说的malloc动态申请的内存也是已确定的,你都不能在 不破坏原有数据的情况下改变其大小。
2、c语言不能使用变长数组,C语言中,直到C99标准出现之前,声明数组时在方括号内只能使用整数常量表达式,也就是说,不能用变量来控制数组的长度,只能用常量来控制。如果想要使用可以通过自己动态分配空间来实现。
3、在有的编译器中数组在定义时用的必须是常量,不能是变量。
4、把int number[counter]一句改成 int *number=(int *)malloc(counter*sizeof(int));试试。前面要加#incoude stdlib.h。最后要加free(number);。
5、纯C编译器是不允许用变量定义数组长度的,编译都过不了。
6、在数组一章中,曾介绍过数组的长度是预先定义好的,在整个程序中固定不变。C语言中不允许动态数组类型。例如:int n;scanf(%d,&n);int a[n];用变量表示长度,想对数组的大小作动态说明,这是错误的。
相关问答
Q1: 关于C语言中定义数组大小的问题(最多能定义多少)
局部变量的方式,在函数内声明,属于栈内存,就更小,确实跟操作系统和C库相关,进程都有栈限制的,可以输入命令ulimit查看,默认也就10K左右,当然你可以设置更大。
与机器条件、内存空间以及程序运行所用空间和编译器有关。好点的机器 1000000是能到的。
一般机器char的最大范围在10^7左右int在10^6左右,你是10^8级别太大了 如果用超级计算机就是非常大也没有问题的。
Q2: C语言的数组最大可以定义多长,求高手解答,请不要很笼统说是系统内存什...
1、简单来说,直接定义就可以了。比如int a[1000][1000];但是如果你的数组非常非常大,那就需要考虑栈内存问题了。因为直接定义的数组是存放在当前线程栈空间的。
2、在内存 计算机所有的硬件资源都是由操作系统管理,当然包括内存。但是像char charater[30];这样定义得到的内存是在栈里,栈是程序一开始运行由操作系统分配(一般大小为2MB),而30这个大小是由编译器来决定。
3、它还可以直接访问内存的物理地址,进行位(bit)一级的操作。由于C语言实现了对硬件的编程操作,因此C语言集高级语言和低级语言的功能于一体。既可用于系统软件的开发,也适合于应用软件的开发。
4、C语言支持一维数组和多维数组。如果一个数组的所有元素都不是数组,那么该数组称为一维数组。在C语言中使用数组必须先进行定义,一维数组的定义方式为:类型说明符; 数组名 ;[常量表达式]。
5、C语言规定,在没有指定函数的作用范围时,系统会默认认为是外部函数,因此当需要定义外部函数时extern也可以省略。
Q3: C语言可定义的最大数组长度为多少
1、理论上,c语言数组最大的大小没有限制,因为它用的是 虚拟存储。对于写程序而言,例如要写下标,那么受 unsigned int 最大值的限制,只能用到十六进制 0xffffffff, 十进制4G多一点。
2、也就是说,只要硬件条件许可的条件下,数组的大小可以为0x7CFFFFFF(2G BYTE)。数组所占空间为:count*sizeof(TYPE) , count是数组元素的个数,sizeof(TYPE) 是一个元素所占空间字节数。
3、确实跟操作系统和C库相关,进程都有栈限制的,可以输入命令ulimit查看,默认也就10K左右,当然你可以设置更大。不会有数专门说这个数组大小的问题,它涉及的知识点会,栈内存,data 段,以这些为关键字去看,整理理解吧。
4、sizeof(a[5])是数组中第6个元素的长度,应该是1。
5、只要内存足够,数组不限制的。字符串变量的话,各语言中一般都是1G字节(2的30次方-1)的限制。
6、但是无论如何定义,数组的长度都是固定的,在定义的时候就已经分配好空间,从这个角度上C语言无法定义无限长的数组。但很多实际应用中又事先无法确定数组的长度,对于这类情况,一般有两种方法可以使用。
关于c语言数组可以么定义多长和数组c语言怎么定义的介绍到此就结束了,不知道你从中找到你需要的信息了吗 ?如果你还想了解更多这方面的信息,记得收藏关注本站。






