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