您的位置:

c语言数组默认长度,C语言如何定义数组长度

本文目录一览:

C语言中关于数组长度

可以使用c本身有的函数啊!!

首先说明一点,关于数组的长度有在定义时给出的长度,但定义时的长度不一定都用完,很可能有好多空间没有用到,此时就有实际长度的概念;

比如:int s[10];

s[10]={1,2,3,4,5,6};

定义整型数组s的长度是10,但是赋初始值时只赋了6个,那么6就是数组的实际长度!!

关于整型数组实际长度的求法,可以在输入的时候就设置计数器变量,每输入一个数就自动加一。

关于字符数组也有定义时的长度和实际长度;我们很多时候用到的就是实际长度:其求法可以用strlen()函数求道;

比如:char s[60];

cins;

coutstrlen(s);

就可以啦!!

假如输入的是:abcdefghj

输入个数:9

c语言怎么获取数组的长度

c语言中,定义数组后可以用sizeof命令获得数组的长度(可容纳元素个数)

如:

{

int data[4];

int length;

length=sizeof(data)/sizeof(data[0]);  //数组占内存总空间,除以单个元素占内存空间大小

printf("length of data[4]=%d", length ); //输出length of data[4]=4

}

但,通过传递数组名参数到子函数中,以获得数组长度是不可行的。如:

int getLength(int[] a){

int length;

length=sizeof(a)/sizeof(a[0]); //这样是错误的,得到的结果永远是1

return length;

}

因为,a是函数参数,到了本函数中,a只是一个指针(地址,系统在本函数运行时,是不知道a所表示的地址有多大的数据存储空间,这里只是告诉函数:一个数据存储空间首地址),所以,sizoef(a)的结果是指针变量a占内存的大小,一般在32位机上是4个字节。a[0]是int类型,sizeof(a[0])也是4个字节,所以,结果永远是1。

因此,获得数组长度,只能在数组定义所在的代码区中,采用以上方法,才可以达到效果。

拓展资料:

数组特点:

数组是相同数据类型的元素的集合。

数组中的各元素的存储是有先后顺序的,它们在内存中按照这个先后顺序连续存放在一起。

数组元素用整个数组的名字和它自己在数组中的顺序位置来表示。例如,a[0]表示名字为a的数组中的第一个元素,a[1]代表数组a的第二个元素,以此类推。

对于VB的数组,表示数组元素时应注意:

下标要紧跟在数组名后,而且用圆括号括起来(不能用其他括号)。

下标可以是常量,变量,或表达式,但其值必须是整数(如果是小数将四舍五入为整数)。

下标必须为一段连续的整数,其最小值成为下界,其最大值成为上界。不加说明时下界值默认为1。

C语言中普通数组在定义的时候不给出数组的具体长度,那么计算机是在运行期间为其分配长度的吗?

变长数组:数组长度为变量,在编译期间不能确定数组长度,要等到程序运行后,变量赋值后(数组定义语句不要写在变量赋值之前!),才能给数组分配内存。

变长数组本质还是静态数组(定义前大小可变,但定义后不能改变大小)。

要定义动态数组需要用malloc函数来申请内存。

c语言数组最大长度

理论上,c语言数组最大的大小没有限制,因为它用的是 虚拟存储。

对于写程序而言,例如要写下标,那么受 unsigned int 最大值的限制,只能用到十六进制 0xffffffff, 十进制4G多一点。

具体程序能获取多大,就很难说,有时编译可以通过,运行时出错。你也可以用 malloc 动态分配请求,看分配是否成功或失败。

对一般程序而言,数组长度通常够用了。