相关疑难解决方法(0)

如果在模板函数中通过const引用传递,则数组不会衰减到指针

这个问题来自这个问题:

c ++将数组传递给函数问题

但由于OP接受了答案,我想现在没人会读.

我在g ++上尝试了这段代码.看来,当传递给这个函数时,数组不会衰减到指针(该函数返回正确的结果):

#include <iostream>

template <typename T>
std::size_t size_of_array (T const & array)
{
   return sizeof (array) / sizeof (*array);
}

int main ()
{
    int a [5];
    std::cout << size_of_array (a) << '\n';
}
Run Code Online (Sandbox Code Playgroud)

另一个用户(sharptooth)表示他在VC++ 10上具有相同的行为内联.

有人可以解释一下吗?谢谢.

c++ arrays

6
推荐指数
1
解决办法
897
查看次数

"sizeof"如何在这个帮助器中用于确定数组大小?

我发现这篇文章提出了以下模板和一个用于获取数组大小的宏:

template<typename Type, size_t Size>
char ( &ArraySizeHelper(Type( &Array )[Size]) )[Size];
#define _countof(Array) sizeof(ArraySizeHelper(Array))
Run Code Online (Sandbox Code Playgroud)

我发现以下部分完全不清楚.sizeof应用于函数声明.我希望结果是"函数指针的大小".为什么它会获得"返回值的大小"呢?

c++ arrays size templates

3
推荐指数
2
解决办法
686
查看次数

标签 统计

arrays ×2

c++ ×2

size ×1

templates ×1