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);
總之就是最低維度的值是需要被指定的。
沒有留言:
張貼留言