天天看點

數組作為函數參數傳遞

數組作為函數參數傳遞

數組作為函數參數傳遞時,傳入的是數組首位址,并非數組本身。今天總算了解了這一點。寫了一個列印數組元素的函數,代碼如下:

void print1(int arr[]) {
	int len = sizeof(arr) / sizeof(arr[0]);
	cout << sizeof(arr)<<endl;
	for (int i = 0;i < len;i++) {
		cout << arr[i] << " ";
	}
}
           

main函數:

int arr[5] = { 1,2,3,4,5 };
	print1(arr);
           

運作結果:

數組作為函數參數傳遞

顯然,并沒有列印出數組所有元素。根據輸出,sizeof(arr)=4;

sizeof(arr)/sizeof(arr[0])=1。很明顯,如果傳入的是數組本身,sizeof(arr)的值一定遠大于4。傳入的是位址的話,則剛好是4個位元組。

再看我寫的第二個列印函數:

void print2(int arr[], int len) {
	for (int i = 0;i < len;i++) {
		cout << arr[i] << " ";
	}
}
           

main函數

int arr[5] = { 1,2,3,4,5 };
	int len = sizeof(arr) / sizeof(arr[0]);
	cout << "數組長度:"<<len<<"   數組所占空間:"<< sizeof(arr)<<endl;
	print2(arr, len);
           

運作結果:

數組作為函數參數傳遞

結果準确無誤。

總結:當數組作為函數參數傳遞時,不能在函數中用sizeof求數組長度。

繼續閱讀