从百度上知道
1、在c语言中,定义数组后,可以通过sizeof命令得到数组的长度(能容纳的元素的个数)。
例如:
intdata[4]; intlength; 长度/sizeof (数据)/sizeof )数据[0]; //数组占内存的总空间,除以单个元素占内存空间的大小,得到printf('lengthofdata[4]=%d ',length ); //输出lengthofdata[4]=4
2 .但是,通过将数组名称参数传递给子函数来获得数组长度是不可能的。
例如:
intgetlength(int[]a ) {intlength; 长度=sizeof (a )/sizeof ) a[0]; //这是错误的,得到的结果总是1returnlength; }因为a是函数自变量,所以在本函数中,a只是指针(地址,在系统执行本函数的期间,不知道a表示的地址具有多少数据存储区域。 在此,作为向函数只告诉了数据存储区域的开头地址) (sizoef(a ) )的结果,指针变量a占据存储器的大小,通常在32位机器中是4字节。 a[0]是int类型,sizeof(a[0]也是4字节,因此结果始终为1。
3、因此,要得到数组长度,必须在数组定义存在的代码区域中,采用上述方法才能取得效果。