亚洲在线久爱草,狠狠天天香蕉网,天天搞日日干久草,伊人亚洲日本欧美

為了賬號安全,請及時綁定郵箱和手機立即綁定

指針變量被直接調用

*arr是指針變量,但沒說是數組類型的,為什么函數在調用時直接就可以把參數?
arr1[]?數組變量?傳遞過去

http://img1.sycdn.imooc.com//560360ad0001650305070394.jpg

正在回答

2 回答

getMaxOrMin函數的第一個參數arr是int指針,并不是數組(其實是一樣的,見回復的最后一段)。將參數聲明為int數組要這樣寫 int arr[]。 (如果寫成 int *arr[] 的話,是聲明了一個int指針的數組)

你是不是說:

另有一個數組,假設為 int a[3];

調用函數時是這樣傳參的: getMaxOrMin(a, ...) ? ?為什么聲明第一個參數為指針,卻傳入了一個數組名??

這樣傳參數是正確的。

如之前所說:數組在作右值時會自動轉換為指向其首元素的指針。用數組名傳參數就是把數組作為右值,所以函數得到的就是指向數組第一個元素的指針,可以和函數聲明匹配上。

還有,在聲明函數時,就算將arr參數聲明為數組(如寫成int arr[]),編譯器還是會將其當作指向元素類型的指針。就是說對函數來說,數組參數就等于是指針! ?故而,把arr寫成數組形式時也無需在[]中寫上數組大小,寫了也沒有作用,就是因為函數會把它當成指針。

2 回復 有任何疑惑可以回復我~
#1

愛3 提問者

謝謝!
2015-09-26 回復 有任何疑惑可以回復我~

數組在作右值時會自動轉換為指向其首元素的指針。傳數組參數時就是用作右值。

函數的參數聲明為指針的話,也會將其視為指針。

0 回復 有任何疑惑可以回復我~
#1

愛3 提問者

*arr在被作為形參是早就定義為數組類型了,是嗎?
2015-09-23 回復 有任何疑惑可以回復我~
#2

onemoo 回復 愛3 提問者

最好還是把代碼寫出來。 函數原型是什么? 如何調用的?
2015-09-23 回復 有任何疑惑可以回復我~
#3

愛3 提問者 回復 onemoo

代碼在問題中,就那個函數的參數是*arr,但若要是數組類型不是應該為*arr[]
2015-09-24 回復 有任何疑惑可以回復我~

舉報

0/150
提交
取消
C++遠征之起航篇
  • 參與學習       290974    人
  • 解答問題       817    個

C++亮點盡在其中,本課程是在C語言基礎上的一個延伸,得以升華

進入課程

指針變量被直接調用

我要回答 關注問題
微信客服

購課補貼
聯系客服咨詢優惠詳情

幫助反饋 APP下載

慕課網APP
您的移動學習伙伴

公眾號

掃描二維碼
關注慕課網微信公眾號