您的位置:首页 > 职场人生

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

2015-01-13 14:15 218 查看
正题:一个int型数组

int a[] = {/*...*/};

可不可以通过函数来求出它的长度?

int len = size(a);这样的?

我当时回答的是不可以,函数参数只能传指针,长度不能传。如果是字符串的话可以通过'\0'判断,但是int数组不行。然后他又问我想通过函数获得长度怎么办?我当时回答貌似没有办法(我想告诉他多传个长度的参数又不会怀孕,不过没敢说)。

确实没有办法吗?我是在网上找了半天都没找到。

解法1:

template<typename?T,?std::size_t?N>

constexpr?std::size_t?size(T(&a)
)?{

????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 (&)
))
; #define RTL_NUMBER_OF_V2(A) (sizeof(*RtlpNumberOf(A)))
内容来自用户分享和网络整理,不保证内容的准确性,如有侵权内容,可联系管理员处理 点击这里给我发消息
标签:  指针 c++ c语言
相关文章推荐