首页 新闻 会员 周边 捐助

西山居一道笔试题:定义一个宏和一个函数求一个数组的长度(用c/c++)

0
悬赏园豆:20 [待解决问题]

西山居一道笔试题:定义一个宏和一个函数求一个数组的长度(用c/c++)

求教啊。。想了很久没有结果。。

☆A希亿的主页 ☆A希亿 | 初学一级 | 园豆:83
提问于:2012-05-16 20:03
< >
分享
所有回答(2)
3

#define ArrayLen(array) sizeof(array) / sizeof(array[0])

 

int ArrayLen(T& array)

{

    return sizeof(array) / sizeof(array[0]);

}

无之无 | 园豆:5095 (大侠五级) | 2012-05-16 20:11
0

这个windows sdk里就有定义,ARRAYSIZE。

也就是sizeof(a)/sizeof(a[0])。c、c++里的一种常见的标准写法。

但注意,编译器对 a 的静态声明必须是“可见”的,即 a 不能退化为指针(作为参数传递时)。否则不能使用这个计算数组长度。

hoodlum1980 | 园豆:573 (小虾三级) | 2012-06-07 16:28

int arraylen(int array[])//这样传递数组是不会退化为指针么?
{
 return sizeof(array)/sizeof(array[0]);
}

 

如何才可用不退化为指针?

支持(0) 反对(0) ☆A希亿 | 园豆:83 (初学一级) | 2012-06-08 19:22
清除回答草稿
   您需要登录以后才能回答,未注册用户请先注册