C语言获取数组长度的方法,在c语言中怎么判断一个数组 的长度

1,在c语言中怎么判断一个数组 的长度需要准备的材料分别有:电脑、C语言编译器 。1、首先 , 打开C语言编译器 , 新建一个初始.cpp文件,例如:test.cpp 。2、在test.cpp文件中,输入C语言代码:printf("%d", sizeof(ARRAY) / sizeof(int)); 。3、编译器运行test.cpp文件 , 此时成功求出了数组的长度是4 。我认为是5可以这样int array[]=也可以这样int array[5]=长度都是5完全同意二楼的
2,有一个数组C语言可以怎么样知道它的长度在键盘上输入任意个数字 , 赋给一个未定义长度的数组 。。这本来就是不可能实现的?。?在C语言中动态数组可以使用动态内存分配来实现: int*a[] 然后通过 sizeof(a)/sizeof(int*) 获得 。具体代码可能有出入,仅作思路说明 。没有办法求出数组长度,只有自己时刻保存 没有数组的越界检查是C的一个很大问题,根本原因就是 数组在经过C编译后是以地址形式存储 , 根本就没有长度信息 有人说用以下方法 len=sizeof(a)/sizeof(int)但这个LEN的值是编译器给的,你把他做成求数组长度的子函数根本行不通,你得到的是变量的长度利用一个for循环,接收这个数组的时候定义一个j=0,每次接收一个数字的时候就执行一次j++ , 全部接收进来后,数组的长度就是j的值数组长度必须在运行前就定义好的哦~不可以改变的 如果是要接收字符串的话可以用指针在键盘上输入任意个数字,赋给一个未定义长度的数组 。。这本来就是不可能实现的?。?在C语言中
3,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语言中怎么判断一个数组 的长度】

    推荐阅读