Re: [問題] 指標的運算

看板C_and_CPP作者 (~~~~~~~~~~)時間15年前 (2010/06/03 15:51), 編輯推噓1(214)
留言7則, 4人參與, 最新討論串4/4 (看更多)
※ 引述《jerki (Dennis)》之銘言: : 因為還在初心者的階段,若問了笨問題請多包涵 : 程式: : int A[5]; : int *P; : for(i=0;i<=4;i++) : A[i]=5-i; : P=A; : 請問下列結果為何? 是各別五小題 : 1.Printf(*P++) ans:5 (我算是6,*優先權較高所以先取A[0]再++) : 2.Printf(*++P) ans:4 (這題就難懂了,不知誰該先做) : 3.Printf(++*P) ans:4 (還是6,一樣先做*P再++) : 4.Printf((*P)++) ans:4 (括號先算,算出來是6) : 5.Printf(*--P) ans:4 (同第二題) : 若題目答案沒問題,那我一定是觀念哪裡錯誤了.. : 麻煩板友指點,萬分感謝Q_Q A[0] = 5; A[1] = 4; A[2] = 3; A[3] = 2; A[4] = 1; Ans1. *P++ = 先 *P 再 P++ A[0] = 5; <----- P A[1] = 4; A[2] = 3; A[3] = 2; A[4] = 1; 先取得 A[0] 值然後 P 向後移一位 A[0] = 5; A[1] = 4; <----- P A[2] = 3; A[3] = 2; A[4] = 1; Ans2. *++P = 先 ++P 再 *P A[0] = 5; A[1] = 4; <----- P A[2] = 3; A[3] = 2; A[4] = 1; P 先向後移一位再取得 A[2] 值 A[0] = 5; A[1] = 4; A[2] = 3; <----- P A[3] = 2; A[4] = 1; (答案似乎有錯) Ans3. ++*P = 先對 *P 的值 ++ 再取得 *P A[0] = 5; A[1] = 4; A[2] = 3; <----- P A[3] = 2; A[4] = 1; 變成 A[0] = 5; A[1] = 4; A[2] = 4; <----- P A[3] = 2; A[4] = 1; Ans4. (*P)++ = 先取得 *P 再對 *P 的值 ++ A[0] = 5; A[1] = 4; A[2] = 4; <----- P A[3] = 2; A[4] = 1; 先取得 A[2] = 4 再變成 A[0] = 5; A[1] = 4; A[2] = 5; <----- P A[3] = 2; A[4] = 1; Ans5. *--P = 先對 P 往前移一位 再取得 *P 的值 A[0] = 5; A[1] = 4; A[2] = 5; <------ P A[3] = 2; A[4] = 1; 變成 A[0] = 5; A[1] = 4; <------ P A[2] = 5; A[3] = 2; A[4] = 1; 再取得 A[1] = 4 第二題答案應該有錯 -- ※ 發信站: 批踢踢實業坊(ptt.cc) ◆ From: 114.36.201.184

06/03 16:15, , 1F
感謝大家回應 V大這應該是五題連續著做吧@@
06/03 16:15, 1F

06/03 16:31, , 2F
恩 連著的
06/03 16:31, 2F

06/03 17:18, , 3F
咦.題目不是分開的?
06/03 17:18, 3F

06/03 21:58, , 4F
那推文我後來才看到的 -.-
06/03 21:58, 4F

06/03 23:30, , 5F
你自己清楚題目嗎= =你有個回應說各自獨立
06/03 23:30, 5F

06/03 23:30, , 6F
令一個又說連續。
06/03 23:30, 6F

06/04 08:24, , 7F
哦 請問樓上在哪看到我回應各自獨立的呀
06/04 08:24, 7F
文章代碼(AID): #1C1ryMDZ (C_and_CPP)
討論串 (同標題文章)
文章代碼(AID): #1C1ryMDZ (C_and_CPP)