如何查找傳遞給函數的字符串數組的大小。大小應該在函數內計算。字符串數組的大小通過函數
#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