課程
/后端開發
/C++
/C++遠征之起航篇
*arr是指針變量,但沒說是數組類型的,為什么函數在調用時直接就可以把參數? arr1[]?數組變量?傳遞過去
2015-09-22
源自:C++遠征之起航篇 5-1
正在回答
getMaxOrMin函數的第一個參數arr是int指針,并不是數組(其實是一樣的,見回復的最后一段)。將參數聲明為int數組要這樣寫 int arr[]。 (如果寫成 int *arr[] 的話,是聲明了一個int指針的數組)
你是不是說:
另有一個數組,假設為 int a[3];
調用函數時是這樣傳參的: getMaxOrMin(a, ...) ? ?為什么聲明第一個參數為指針,卻傳入了一個數組名??
這樣傳參數是正確的。
如之前所說:數組在作右值時會自動轉換為指向其首元素的指針。用數組名傳參數就是把數組作為右值,所以函數得到的就是指向數組第一個元素的指針,可以和函數聲明匹配上。
還有,在聲明函數時,就算將arr參數聲明為數組(如寫成int arr[]),編譯器還是會將其當作指向元素類型的指針。就是說對函數來說,數組參數就等于是指針! ?故而,把arr寫成數組形式時也無需在[]中寫上數組大小,寫了也沒有作用,就是因為函數會把它當成指針。
愛3 提問者
數組在作右值時會自動轉換為指向其首元素的指針。傳數組參數時就是用作右值。
函數的參數聲明為指針的話,也會將其視為指針。
onemoo 回復 愛3 提問者
愛3 提問者 回復 onemoo
舉報
C++亮點盡在其中,本課程是在C語言基礎上的一個延伸,得以升華
Copyright ? 2025 imooc.com All Rights Reserved | 京ICP備12003892號-11 京公網安備11010802030151號
購課補貼聯系客服咨詢優惠詳情
慕課網APP您的移動學習伙伴
掃描二維碼關注慕課網微信公眾號
2015-09-25
getMaxOrMin函數的第一個參數arr是int指針,并不是數組(其實是一樣的,見回復的最后一段)。將參數聲明為int數組要這樣寫 int arr[]。 (如果寫成 int *arr[] 的話,是聲明了一個int指針的數組)
你是不是說:
另有一個數組,假設為 int a[3];
調用函數時是這樣傳參的: getMaxOrMin(a, ...) ? ?為什么聲明第一個參數為指針,卻傳入了一個數組名??
這樣傳參數是正確的。
如之前所說:數組在作右值時會自動轉換為指向其首元素的指針。用數組名傳參數就是把數組作為右值,所以函數得到的就是指向數組第一個元素的指針,可以和函數聲明匹配上。
還有,在聲明函數時,就算將arr參數聲明為數組(如寫成int arr[]),編譯器還是會將其當作指向元素類型的指針。就是說對函數來說,數組參數就等于是指針! ?故而,把arr寫成數組形式時也無需在[]中寫上數組大小,寫了也沒有作用,就是因為函數會把它當成指針。
2015-09-22
數組在作右值時會自動轉換為指向其首元素的指針。傳數組參數時就是用作右值。
函數的參數聲明為指針的話,也會將其視為指針。