3 回答
![?](http://img1.sycdn.imooc.com/545865620001c45402760276-100-100.jpg)
TA贡献1853条经验 获得超18个赞
int a[] = {1, 2, 3};int *ap = a; // a pointer, size is lostint (&ar)[3] = a; // a reference to the array, size is not lost
template<typename T, size_t n>size_t array_size(const T (&)[n]) { return n;}
a
size_t array_size(const int (&)[3]) { return 3;}
size_t size_of_a = array_size(a);
n
:
template<typename T, size_t n>char (& array_size(const T (&)[n]) )[n];
n
n
char
size_t size_of_a = sizeof(array_size(a));
char
n
n
int havingSameSize[sizeof(array_size(a))];
![?](http://img1.sycdn.imooc.com/5458472300015f4702200220-100-100.jpg)
TA贡献1836条经验 获得超13个赞
// Note that you don't need to name the array, since you don't// actually reference the parameter at all.size_t array_size(const int (&)[1]){ return 1;}size_t array_size(const int (&)[2]){ return 2;}size_t array_size(const int (&)[3]){ return 3;}// etc...
int a[2];array_size(a);
template <int n>size_t array_size(const int (&)[n]){ return n;}
template <typename T, int n>size_t array_size(const T (&)[n]){ return n;}
编辑(&)
&
[]
&
const int &a[1];
&
const int (&a)[1];
size_t array_size(const int (&)[1])
- 3 回答
- 0 关注
- 419 浏览
添加回答
举报