c语言求数组长度函数,c求数组长度

1,c求数组长度如图,函数int len(int array[])会被编译器解析成int len(int *array) 。也就是说,实际传给len函数的变量array是一个指针,指针在32位编译器上是4字节,int也是4字节 , 所以无论怎样,len函数都会返回1 。另外 , array这个词在C++中是作为关键字符的,尽量避免使用 。用指针试试吧 。可能size(array)就是求一个元素所占的字节
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])【c语言求数组长度函数,c求数组长度】

    推荐阅读