看板 Examination 關於我們 聯絡資訊
[考題] 國考歷屆考題與考題觀念討論(書裡看到的選這個)請附上想法、出處 void f(int *p,int a[]) { p=a;} //*(p)=1 void main() { int a[]={1,3,5,7}; int *p=&a[1]; f(p,a); //*(p)=3 p++; cout<<*(p); //*(p)=5 } 想法: p不是指標嗎? 為什麼離開 f function 後 p值仍未改? call by value? 考題出處 101年中華電信考題 -- ※ 發信站: 批踢踢實業坊(ptt.cc) ◆ From: 58.99.89.225
carterdunk:因為Call by value 06/12 23:50
maruz:會改的狀況是去改變"p指向的內容", 這個副函式是去改p指標 06/12 23:51
meg700:就算是指標 也是用傳值的方式將指標本身的內容 這裡是a[1] 06/13 00:16
meg700:的位置 傳進去 06/13 00:17
meg700:會有類似傳址的效果是當你直接去對記憶體位置操作 也就是對 06/13 00:19
meg700:p指向的內容*p直接做更改 才看起來像傳址 06/13 00:21
meg700:就我的理解是這樣 不知道有沒有錯 06/13 00:21
asdd:原PO把副程式的p改成q應該就知道了你應該是被那個p誤導了!! 06/13 00:22
hrlife:感謝解答 看到盲點了 06/13 01:04