看板 C_and_CPP 關於我們 聯絡資訊
#include<stdio.h> #include<stdlib.h> int main(){ int a[5]={5,4,3,2,1}; int *p; p=a; printf("%d\n",p); printf("%d\t",*p++); printf("%d\n",p); //p=a; printf("%d\t",*++p); printf("%d\n",p); // p=a; printf("%d\t",++*p); printf("%d\n",p); //p=a; printf("%d\t",(*p)++); printf("%d\n",p); // p=a; printf("%d\t",*--p); printf("%d\n",p); system("pause"); } 你用這個程式自己看一下記憶體位置,這樣應該就能理解了 ※ 引述《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 -- ※ 發信站: 批踢踢實業坊(ptt.cc) ◆ From: 125.224.204.41
jerki:謝謝回應^^ 06/03 16:17
visor:要噓別噓錯人...... 06/04 08:26