如何查找传递给函数的字符串数组的大小。大小应该在函数内部计算。
#include<iostream>
using namespace std;
template <typename T,unsigned S>
unsigned arraysize(const T (&v)[S]) { return S; }
void func(string args[])
{
unsigned m=arraysize(args);
cout<<m;
}
int main()
{
string str_arr[]={"hello","foo","bar"};
func(str_arr);
}
我不明白的是:
如果在 main 中使用该语句arraysize(str_arr)
,则不会造成问题。str_arr 是一个数组,所以 str_arr 充当一个指针,所以当我们使用 arraysize(str_arr) 时,这意味着我们正在将地址发送给 arraysize 函数。(如果我错了,请纠正我)。
但是在函数func()中,我不明白为什么会出现问题,即语句arraysize(args)
发送字符串数组args的地址(或指针args的地址)..还是因为它变成了一些双指针而变得更复杂?解释?
另外请更正上面的代码..