函数中,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);
这样就行了。
欢迎分享,转载请注明来源:内存溢出
评论列表(0条)