廢話不多說,先上錯誤示范:
void fun(int arr[arr_num]) {
// ...
}
int main() {
// ...
int *arr = new int[10];
fun(arr)
// ...
return 0;
}
很多人向函數傳遞數組時,都想要也把數組大小傳遞進去方便操作,雖然上邊的方法看起來比較順眼,但是是錯誤的,arr_num起不到任何作用,也就是說不管你傳進去的數組為多大,都不會報錯。
正確的做法如下:
方法一:
把數組大小當作另外一個參數傳進去
void fun(int *arr, int arr_num) {
// ...
}
方法二:
void fun(int (&arr)[arr_num]) {
// ...
}
經檢驗,這種方式也存在報錯的時候:
1、當傳遞的參數不為指針時,此方法正確,即:
int arr[10] = {0};
fun(arr);
2、當傳遞的參數為指針時,此方法報錯,即:
int *arr = new int[10];
fun(arr);
綜上所述,還是第一種方法比較穩妥,多一個參數也沒什麼大不了的呵呵