程序師世界是廣大編程愛好者互助、分享、學習的平台,程序師世界有你更精彩!
首頁
編程語言
C語言|JAVA編程
Python編程
網頁編程
ASP編程|PHP編程
JSP編程
數據庫知識
MYSQL數據庫|SqlServer數據庫
Oracle數據庫|DB2數據庫
 程式師世界 >> 編程語言 >> C語言 >> C++ >> 關於C++ >> C++必知必會(六)數組形參

C++必知必會(六)數組形參

編輯:關於C++

筆記:

c++根本不存在所謂的“數組形參”,數組在傳入時,實質上只傳入指向其首元素的指針 。

void average( int array[12] ); // 形參是一個int *
void average( int array[] ); // 形參仍然是一個int *
void average( int (&array)[12] ); // 現在函數只能接受大小為12的整型數組
// 注意:不可以使用int *初始化 int(&)[n]

template< int n >
void average( int (&array)[n]); // 借助模板使代碼泛化

void average_n(int array[], int nSize); // 傳統做法是把數組大小明確傳入函數

template< int n >
inline void average( int (&array)[n] ) // 模板與傳統做法結合實現
{
average_n(array, n);
}

多維數組的情況,以下聲明語句相等,但是數組的第二個邊界(以及後續的)沒有被退化 :

void process( int array[10][20] ); // 形參是指向數組首元素的指針
void process( int (*array)[20] ); // 形參是指向一個具有20個元素的數組的指針
void process( int array[][20] ); // 形參是指針,但是比前邊兩個語句更加清晰

同樣,利用模板以及傳統做法結合,可以實現數組形參輸入不需要明確傳入大小:

void process_2d(int *arr, int n, int m);

template< int n, int m >
inline void process( int (&array)[n] )
{
process_2d(array, n, m);
}

  1. 上一頁:
  2. 下一頁:
Copyright © 程式師世界 All Rights Reserved