百度面试一题,通过函数求出int数组长度

正题:一个int型数组
int a[] = {/*...*/};
可不可以通过函数来求出它的长度?
int len = size(a);这样的?
我当时回答的是不可以,函数参数只能传指针,长度不能传。如果是字符串的话可以通过'\0'判断,但是int数组不行。然后他又问我想通过函数获得长度怎么办?我当时回答貌似没有办法(我想告诉他多传个长度的参数又不会怀孕,不过没敢说)。
确实没有办法吗?我是在网上找了半天都没找到。


解法1:
template<typename?T,?std::size_t?N>
constexpr?std::size_t?size(T(&a)[N])?{
????return?N;
}


解法2:
WinNT.h中的实现
#define ARRAYSIZE(A) RTL_NUMBER_OF_V2(A)
extern "C++" // templates cannot be declared to have 'C' linkage
template <typename T, size_t N>
char (*RtlpNumberOf( UNALIGNED T (&)[N] ))[N]; #define RTL_NUMBER_OF_V2(A) (sizeof(*RtlpNumberOf(A)))
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值