我們知道,在C/C++中,向一個函數傳遞數組時,實際上傳送的是這個數組的首地址,也即是一個指針類型。所以,在函數中,我們沒有辦法知道這個傳遞進來的數組的長度到底為多長,一個普遍的方法就是再增加一個參數,來記錄傳遞進來的數組的長度。
不過在C++中,使用模板機制,可以很好地解決這個問題,如下面的代碼所示:
#include <iostream>
using namespace std;
template<class T, int N>
void array(T (¶m)[N])
{
cout << "N= " << N << endl;
}
int main()
{
int i[100];
double d[20];
char c[6];
array(i);
array(d);
array(c);
return 0;
}