注册 登录
编程论坛 VC++/MFC

如何获取数组的长度

myvc 发布于 2010-10-31 22:53, 18648 次点击
如何获取数组的长度
如:int a[5]={12,34,56,93,29};
如果不知道数组a的实际长度,用什么函数可以得到?谢谢
6 回复
#2
pbreak2010-11-01 08:02
sizeof(a)/4 就是数组实际长度
#3
a3962803962010-11-01 19:06
strlen()函数就是微软求字符串长度的函数
#4
Ray77772010-11-02 10:44
貌似头文件再加个# include<string.h>
再用3楼的函数求长度
#5
kwbplcz2010-11-03 15:49
C函数里有strlen(char*)函数,
但该函数的原理是:
从数组的第一个字节开始,依次向后遍历,直到遇到0x00字符。

所以,有如下两个问题:

一,
如果数组声明时的大小为N,
而数组已经使用满了,而且所有元素值都不为0x00,
则使用该函数会出现内存访问错误;

二,
sizeof可以获得数组的空间大小,
例如,数组声明时的大小为N,元素类型为E,每个元素所占用的存储空间大小为M,
则整个数组大小为 N * M 字节;
因此,
sizeof(数组) 得到数组占用的所有字节数,
sizeof(数组) / sizeof(元素类型) 得到元素的个数;
#6
jiasenlin2010-11-05 11:21
sizeof(a)/sizeof(a[0])
#7
chenaitang2017-07-25 17:18
如果单独只是只是一个数组,则sizeof(a)/sizeof(a[0])可行;
若将数组作为函数输入时,则只能使用数组作为输入,不能使用指针,原因如下:
若使用指针作为输入
int void (int *ar)
{
    sizeof(ar)/sizeof(ar[0])等于1;
    因为sizeof(ar)表示指针大小,为4个字节;
    sizeof(ar[0])表示数组第一个元素所占字节数,int为4字节

}
1