2010年8月20日 星期五

function 的陣列參數

C++ 設計 function 時,若參數有陣列一般是這樣宣告的,


int foo(int arr[], int nP);


這行原型等價於


int foo(int *arr, int nP);


所以傳陣列就沒有在分傳值或傳址了,在 foo 中可以任意的改變此陣列的內容,這是相當危險的情況,可以利用 const 來保護它


int foo(const int arr[], int nP);


如此在 foo 內部就只能讀取 arr 而無法改寫裡面的元素嘍。

順便記一下多維陣列的傳遞,


int data[8][3] = {{}, {}, {}, {}, {}, {}, {}, {}};

int nSumData = Sum(data, 8);

int Sum(int arr[][3], int size);





int data[8][3] = {{}, {}, {}, {}, {}, {}, {}, {}};

int nSumData = Sum(data, 8);

int Sum(int (*arr)[3], int size);


總之就是最低維度的值是需要被指定的。

沒有留言:

張貼留言