C语言中,定义数组后可以用sizeof命令获得数组的长度(即可容纳元素个数)。但是通过传递数组名参数到子函数中,以获得数组长度是不可行的,因为在子函数当中,数组名会退化为一个指针。
创新互联主营芜湖网站建设的网络公司,主营网站建设方案,app开发定制,芜湖h5微信平台小程序开发搭建,芜湖网站营销推广欢迎芜湖等地区企业咨询
堆区的数组,堆区的数组是自己申请的,比如用new申请空间:int* arr = new int[10],堆区的数组不能计算出包含元素个数。栈区的数组,栈区的数组是系统自动分配的。
int GetLength(int[] arr){return sizeof(arr) / sizeof(int); //就是用sizeof计算出来的数组长度 除以 数据类型的长度。
void main(){ int j;char s[5]={1,2,3,4,\0}; /*把字符依次赋值给数组中的每个元素,数组并不会自动在末尾加上\0,所以要手动加上\0。
1、如果这样定义,每一行还是20个数,后面的自动补为0了,所以根据这个数组不能求得每一行的元素个数。楼主可以在这个数组每一行再添加一个特殊的数字作为标志位。
2、main里面第一行,a[10]就表示分配了10个元素的空间,所以a的size是10个int,故结果为10。所以就第一行改为a[5]或者a[]就可以了。估计你想要的是a[]这种,根据你列表里的元素个数,自动分配。
3、但是通过传递数组名参数到子函数中,以获得数组长度是不可行的,因为在子函数当中,数组名会退化为一个指针。C语言是一门通用计算机编程语言,应用广泛。
4、也就是说,未定义的数组会随机取得1个值,所以在不定值中判断是不是存在有效元素是不可取的。C语言中,数组没有默许值,也就是说,未定义的数组会随机取得1个值,所以在不定值中判断是不是存在有效元素是不可取的。
如果这样定义,每一行还是20个数,后面的自动补为0了,所以根据这个数组不能求得每一行的元素个数。楼主可以在这个数组每一行再添加一个特殊的数字作为标志位。
int strlen(char s[]);void main(){ int j;char s[5]={1,2,3,4,\0}; /*把字符依次赋值给数组中的每个元素,数组并不会自动在末尾加上\0,所以要手动加上\0。
main里面第一行,a[10]就表示分配了10个元素的空间,所以a的size是10个int,故结果为10。所以就第一行改为a[5]或者a[]就可以了。估计你想要的是a[]这种,根据你列表里的元素个数,自动分配。
int GetLength(int[] arr){return sizeof(arr) / sizeof(int); //就是用sizeof计算出来的数组长度 除以 数据类型的长度。