如何查找传递给函数的字符串数组的大小。大小应该在函数内计算。字符串数组的大小通过函数
#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);
}
什么我不明白的是:
如果语句arraysize(str_arr)
主使用,就不会造成问题。 str_arr是一个数组,因此str_arr充当指针,所以当我们使用arraysize(str_arr)时,意味着我们将地址发送到arraysize函数(纠正我,如果我错了)。
但在函数func(),我不明白为什么有一个问题,即声明arraysize(args)
发送字符串数组ARGS(或指针参数的个数地址)的地址..或者是更复杂,因为它变得一些双指针?说明?
另外请纠正上述代码..
无法确定数组大小和指针大小。不是没有专用的终止字节。这就是为什么我们有argc开始。 – Dmitry 2013-03-06 20:05:35
另一个使用'std :: vector'的理由。 – 2013-03-06 20:07:00
这是java数组超过C++指针的优点之一,数组的大小可以从数组本身获得。德米特里是正确的,在C++中你所要求的是不可能的。 – 2013-03-06 20:07:01