[考題] 100年普考程式設計概要

看板Examination作者 (小楊)時間9年前 (2017/03/16 11:41), 編輯推噓3(303)
留言6則, 4人參與, 最新討論串1/2 (看更多)
[考題] 國考歷屆考題與考題觀念討論(書裡看到的選這個)請附上想法、出處 請問下列 C 程式片段執行後,a 陣列的內容為何? #define N 10 int a[N]={1,2,3,4,5,6,7,8,9,10}; int *p=&a[0], *q=&a[N-1], temp; while(p < q) { temp=*p; *p++=*q; *q--=temp; } 答案是{10,9,8,7,6,5,4,3,2,1} 我的想法是 p是儲存a[0]的位址 q是儲存a[9]的位址 而a[0]的位址永遠比a[9]小 那while為何不會成為無窮迴圈? 再來就是*p和*q的值分別指的是a[0]和a[9]的內容 為何做加減也會影響到陣列內其他元素的值? 求解惑 -- ※ 發信站: 批踢踢實業坊(ptt.cc), 來自: 223.138.223.205 ※ 文章網址: https://www.ptt.cc/bbs/Examination/M.1489635716.A.228.html

03/16 11:52, , 1F
*p=&a[0] 代表他存的是a[0]的位址,不是內容
03/16 11:52, 1F

03/16 12:11, , 2F
宣告時*p=&a[0]代表 指標變數p指向a[0]的位址
03/16 12:11, 2F

03/16 12:12, , 3F
而運算時*p則代表指標變數的內容 也就是a[0]的內容
03/16 12:12, 3F

03/16 12:13, , 4F
不知是否有哪個環節理解錯誤?
03/16 12:13, 4F

03/16 20:43, , 5F
推文說的都沒錯,已回應在版上
03/16 20:43, 5F

04/02 22:43, , 6F
你有看到p++跟q--嗎?
04/02 22:43, 6F
文章代碼(AID): #1OoWc48e (Examination)
文章代碼(AID): #1OoWc48e (Examination)