
正文
c语言数组特别大都要写出吗,c语言如何让数组大小随输入而定
提示:扫一扫查出行【扫一扫了解最新限行尾号】
复制提示
c语言数组大小的问题?
1、先用循环统计的方式获得数量(作为数组长度),然后赋值给一个const常量,最后用这个常量作为数组长度即可。如果无法估计需要的最大长度,可以直接把数组长度定义得尽可能地长,多余的部分就不用了就行了。如果说你要的是不定长的数组(动态数组)的话,还是用集合(或者叫容器)来替代数组(静态数组)比较好。
2、首先C语言里面的数组,一旦定义好了,是无法改变类型和长度的,也不是指针,不能改变指向的内容,所以如下这种写法 int a[10], b[10];a = b;是无法编译的。
3、C 语言不允许对数组的长度进行动态定义,换句话说,数组的大小不依赖程序运行过程中变量的值。非通常的情况为动态内存分配,此种情况下数组的长度就可以动态定义。
4、也就是说,只要硬件条件许可的条件下,数组的大小可以为0x7CFFFFFF(2G BYTE)。数组所占空间为:count*sizeof(TYPE) , count是数组元素的个数,sizeof(TYPE) 是一个元素所占空间字节数。如果定义数组空间超出2G,VC编译会报错:fatal error C1126: 2G : automatic allocation exceeds 。。
5、可以用sizeof来计算数据类型所占的字节数,比如sizeof(int)可以得到整型变量所占的字节数,然后乘以数组的长度就可以得到整个数组所占的字节数。对于使用malloc函数分配的内存,使用完后要用free函数来释放它。使用malloc函数要包含stdlib.h头文件。
相关问答
Q1: 用c语言如何定义一个较大的二维数组,例如1000行1000列
1、简单来说,直接定义就可以了。比如int a[1000][1000];但是如果你的数组非常非常大,那就需要考虑栈内存问题了。因为直接定义的数组是存放在当前线程栈空间的。一般线程栈空间都会有默认值(可能有1MB到10MB不等),具体取决于操作系统的默认分配策略。也可以通过创建线程的时候自己设置。
2、直接定义 int a[1000][1000];变量存放在栈里,这个要看编译的时候栈的大小。\x0d\x0a如果栈空间不够大,可以通过new实现。
3、直接定义 int a[1000][1000];变量存放在栈里,这个要看编译的时候栈的大小。如果栈空间不够大,可以通过new实现。
4、想开大的数组,可以用动态分配。定态数组,作为全局量可以开得大。例如:include stdio.h int a[1001][1001]; // 全局量 main(){ a[1000][1000]=1000;printf(%d,a[1000][1000]);return 0;} 若放到 main(){} 里,就是局部量,就不能用这么多单元了。
5、动态数组当然要自己在堆中申请空间啊,具体代码是这样的 int **p;p=(int **)malloc(sizeof(int)*n);for(i=0;in;i++)p[i]=(int *)malloc(sizeof(int)*n);这样就创建了一个动态的二维数组p[n][n]。
Q2: C语言中定义数组时方括号里的数多些有什么影响。。
在C中,可以逐个初始化数组,也可以使用一个初始化语句,如下所示:double balance[5] = {1000.0, 0, 4, 0, 50.0};大括号 { } 之间的值的数目不能大于我们在数组声明时在方括号 [ ] 中指定的元素数目。如果省略掉了数组的大小,数组的大小则为初始化时元素的个数。
定义数组时数组名后面的方括号里的数字代表数组所能容纳的最大元素,这里为10,而后面的大括号里的元素个数为7,没有超过数组所能容纳的最大元素个数,所以这里的有效数组元素个数为7个。
数组a[5],意思是数组名为:a,数组中一共有5个元素。每个元素是从下标0开始,依次为:a[0]、a[1]、a[2]、a[3]、a[4],记住如果你声明了数组,比如:int a[5],那么你就不能操作a[5]=5 或者a[6]=12等等之类的。因为数组一共有5个元素,那么它的下标最多到a[4]=xx。
原因是你在scanf中加了\n, 但是不仅仅是去掉\n 那么简单,深入研究下去就涉及到缓冲区的问题。
定义数组时大括号内,是可以没有数字的。你的问题,从错误的是定义时紧跟在变量名a后面的第一个括号。
在C语言中,方括号用于表示数组下标或指针解引用操作。数组是一种存储同类型数据的连续内存空间,通过下标访问数组元素可以实现对数组中数据的管理和操作。指针则是一种变量类型,它存储的是内存地址,通过指针可以实现对内存空间的直接访问和操作。
关于c语言数组特别大都要写出吗和c语言如何让数组大小随输入而定的介绍到此就结束了,不知道你从中找到你需要的信息了吗 ?如果你还想了解更多这方面的信息,记得收藏关注本站。






