Re: [問題] 請教一些基本問題

看板C_and_CPP (C/C++)作者 (阿水~*)時間16年前 (2009/09/28 11:20), 編輯推噓0(001)
留言1則, 1人參與, 最新討論串3/3 (看更多)
※ 引述《kiminozo (Mr.Children-花火)》之銘言: : 大家好,以下幾題我有跑過程式 : 但卻不知答案為何是如此,請各位幫我解惑,謝謝!! : Q1. : int a[5]={1,2,3,4,5}; : printf("%d",(a+1)[2]); : Ans:4 : (a+1)[2]代表的是? a指向1的位置假設是00H a+1就跑到04H了 04H在+2不就是0CH 也就是4 : Q2. : void foo(int b[][3]) : { : ++b; : b[1][1]=1; : } : int main(void) : { : int a[3][3]={ {1,2,3} , {4,5,6} , {7,8,9} }; : foo(a); : printf("%d\n",a[1][1]); : printf("%d\n",a[2][1]); : } : Ans: 5 : 1 : foo(a)這個副程式中發生了什麼事使得a矩陣數值改變? b是指標的指標 ++b就指向a[1] 從a[1]再去找[1][1] 就等於a[2][1]了 : Q3. : void addsum(int *num) : { : int number = *num; : printf("number=%d\n",(*num)++); : } : int main(void) : { : int i,number=100; : for(i=0;i<N;i++) : addsum(&number); : } : Ans: number=100 : number=101 : number=102 : for迴圈中的&number不是都是指向同一個address嗎 : 為何addsum副程式中number還是可以累加? 正因為是同一個位置 所以才可以改變數值不是嗎? -- ※ 發信站: 批踢踢實業坊(ptt.cc) ◆ From: 219.70.227.62

09/28 14:04, , 1F
感謝你的講解^^
09/28 14:04, 1F
文章代碼(AID): #1Am2jt63 (C_and_CPP)
討論串 (同標題文章)
文章代碼(AID): #1Am2jt63 (C_and_CPP)