c语言中求数组的长度的函数,c语言 怎么计算整型数组的长度

1,c语言 怎么计算整型数组的长度用sizeof(a)假设数组名为a则用语句:sizeof(a)/sizeof(a[0]);如果数组为a , 长度可以如下计算:sizeof(a) / sizeof(int)【c语言中求数组的长度的函数,c语言 怎么计算整型数组的长度】
2,c语言怎么获取数组的长度c语言中,定义数组后可以用sizeof命令获得数组的长度(可容纳元素个数)如:123456 intdata[4];intlength;length=sizeof(data)/sizeof(data[0]); //数组占内存总空间,除以单个元素占内存空间大小printf("length of data[4]=%d", length ); //输出length of data[4]=4} 但,通过传递数组名参数到子函数中 , 以获得数组长度是不可行的 。如:123456 intgetLength(int[] a) intlength; length=sizeof(a)/sizeof(a[0]); //这样是错误的,得到的结果永远是1 returnlength;}因为,a是函数参数,到了本函数中 , a只是一个指针(地址,系统在本函数运行时,是不知道a所表示的地址有多大的数据存储空间,这里只是告诉函数:一个数据存储空间首地址) , 所以,sizoef(a)的结果是指针变量a占内存的大小,一般在32位机上是4个字节 。a[0]是int类型,sizeof(a[0])也是4个字节,所以,结果永远是1 。因此,获得数组长度,只能在数组定义所在的代码区中,采用以上方法,才可以达到效果 。纯数组的长度是不可能获得的 , C语言没有这样的机制,你可以在结构体里面加上一个变量表示data数组中元素的个数,在add函数(或者类似的)操作这个元素个数 , 增加了data元素就加1,否则减1,或者置为空,希望能帮到你如果按照你这种参数传入的话,是不能得到数组的长度的 。假设有个node类型的变量a,正常得到数组长度就是sizeof(a.data)就可以了sizeof(data)/siezof(data[0])

    推荐阅读