作者visor (~~~~~~~~~~)
看板C_and_CPP
標題Re: [問題] 指標的運算
時間Thu Jun 3 15:51:46 2010
※ 引述《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
推 jerki:感謝大家回應 V大這應該是五題連續著做吧@@ 06/03 16:15
→ visor:恩 連著的 06/03 16:31
推 ilovebbs:咦.題目不是分開的? 06/03 17:18
→ visor:那推文我後來才看到的 -.- 06/03 21:58
噓 diabloevagto:你自己清楚題目嗎= =你有個回應說各自獨立 06/03 23:30
→ diabloevagto:令一個又說連續。 06/03 23:30
→ visor:哦 請問樓上在哪看到我回應各自獨立的呀 06/04 08:24