3 回答
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 losttemplate<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];
nnchar
size_t size_of_a = sizeof(array_size(a));
charnn
int havingSameSize[sizeof(array_size(a))];
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 关注
- 500 浏览
添加回答
举报
