using namespace std;
//方法2 (MACRO)
#define STRUCTSIZE(s) (sizeof(s) / sizeof(*s))
//方法3
//陣列大小 5 可以在編譯期被 Template 自動推導出來,而不是等程式執行後才計算。
template <size_t N>
size_t ar_size(int (&x)[N])
{
return N;
}
int _tmain(int argc, _TCHAR* argv[])
{
int x[]={1,2,3,4,5};
//方法1 (sizeof() 傳統C與C++的運算子-------------
cout << "方法1: " << sizeof(x) / sizeof(int) << endl;
//方法2 (MACRO)----------------------------------
cout << "方法2: " << STRUCTSIZE(x) << endl;
//方法3 (函數)-----------------------------------
ar_size(x);
cout << "方法3: " << ar_size(x) << endl;
//方法4 (C++17 std::size(x))---------------------
size(x);
cout << "方法4: " << size(x) << endl;
return 0;
}