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

看板C_and_CPP (C/C++)作者 (我愛阿蓉)時間16年前 (2009/09/28 11:18), 編輯推噓0(001)
留言1則, 1人參與, 最新討論串2/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 現在a+1 所以指向2 然後以2這位址起始[0]=2 [1]=3 [2]=4 所以答案是4 : Q2. : void foo(int b[][3]) : { : ++b; : b[1][1]=1; : } 原本矩陣 123 ++b所以 456 b[0][0]是4 789 現在把b[1][1]設1 改道原本8的位置 : 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矩陣數值改變? 印出來 原本8變成1 : Q3. : void addsum(int *num) : { : int number = *num; : printf("number=%d\n",(*num)++); 因為你是傳入位址 *num得到100 因為++優先權低 所以先印出100 對他做++ 得到101 回到主程式 下次近來 number已經是101了 再做重複的事情 : } : 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: 140.113.207.187

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