[考題] 計算機概論

看板Examination作者 (縱浪大化中..)時間11年前 (2013/06/12 23:19), 編輯推噓4(405)
留言9則, 5人參與, 最新討論串2/7 (看更多)
[考題] 國考歷屆考題與考題觀念討論(書裡看到的選這個)請附上想法、出處 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

06/12 23:50, , 1F
因為Call by value
06/12 23:50, 1F

06/12 23:51, , 2F
會改的狀況是去改變"p指向的內容", 這個副函式是去改p指標
06/12 23:51, 2F

06/13 00:16, , 3F
就算是指標 也是用傳值的方式將指標本身的內容 這裡是a[1]
06/13 00:16, 3F

06/13 00:17, , 4F
的位置 傳進去
06/13 00:17, 4F

06/13 00:19, , 5F
會有類似傳址的效果是當你直接去對記憶體位置操作 也就是對
06/13 00:19, 5F

06/13 00:21, , 6F
p指向的內容*p直接做更改 才看起來像傳址
06/13 00:21, 6F

06/13 00:21, , 7F
就我的理解是這樣 不知道有沒有錯
06/13 00:21, 7F

06/13 00:22, , 8F
原PO把副程式的p改成q應該就知道了你應該是被那個p誤導了!!
06/13 00:22, 8F

06/13 01:04, , 9F
感謝解答 看到盲點了
06/13 01:04, 9F
文章代碼(AID): #1Hk963v7 (Examination)
討論串 (同標題文章)
文章代碼(AID): #1Hk963v7 (Examination)