C语言,关于求数组长度的问题!

C语言,关于求数组长度的问题!,第1张

解答:第一,在main
函数中,a为一维数组,是个常指针,此时sizeof(a)就能够计算出来410
=
40,sizeof(int)是为4的
第二,在int
Length中,你将a作为一个地址传入该函数里,这个arr只是一个指针变量而已,它的大小为4个字节,使用sizeof(arr)时只能得到4。
这个sizeof比较奇怪,你在主函数里定义
char
b
=
"helloworld";
如果使用sizeof(b)的话,也是算出来4,懂了吗,嘿嘿

没有办法求出数组长度,只有自己时刻保存
没有数组的越界检查是C的一个很大问题,根本原因就是
数组在经过C编译后是以地址形式存储,根本就没有长度信息
有人说用以下方法
len=sizeof(a)/sizeof(int)
但这个LEN的值是编译器给的,你把他做成求数组长度的子函数根本行不通,你得到的是变量的长度

比如获取一个int类型数组的长度:

int example[20];
int ArrLength;
ArrLength = sizeof(example) / sizeof(int);

这样就行了。


欢迎分享,转载请注明来源:内存溢出

原文地址: http://outofmemory.cn/yw/13130859.html

(0)
打赏 微信扫一扫 微信扫一扫 支付宝扫一扫 支付宝扫一扫
上一篇 2023-06-08
下一篇 2023-06-08

发表评论

登录后才能评论

评论列表(0条)

保存