尝试动态查找数组的大小。在main()中获取大小可以正常工作,但是当我将它传递给GetSize函数时却没有。
#include <iostream>
#include <string>
using namespace std;
string GetSize(string array[]);
int main()
{
string array[] = {"A", "B", "C", "D", "E"};
int ARRAY_SIZE = (sizeof(array) / sizeof(array[0]));
cout << "Total Size: " << sizeof(array) << endl;
cout << "Single Element Size: " << sizeof(array[0]) << endl;
// Pass the array as an argument to GetSize()
GetSize(array);
}
string GetSize(string array[])
{
// Get size of the array
int ARRAY_SIZE = (sizeof(array) / sizeof(array[0]));
cout << "Size of array is: " << sizeof(array) << endl;
cout << "Size of 1st element is: " << sizeof(array[0]);
}
输出
// Total Size: 160
// Single Element Size: 32
// Size of array is: 8
// Size of 1st element is: 32
我不知道为什么总大小和数组大小之间存在差异。
Repl Sandbox: https://repl.it/@phreelyfe/Size-Of-Error
答案 0 :(得分:0)
怎么样?
template <typename T, std::size_t N>
constexpr std::size_t getArrSize (const T(&)[N])
{ return N; }
我的意思是:不同大小的不同阵列是不同的类型。
所以你必须明确传入参数的大小。
写作时
string GetSize(string array[])
编译器将string array[]
视为string * array
,因此您将sizeof(array)
作为指针(8)的大小。
在main()
中,sizeof(array)
的大小为string[5]
,因此为160。