Re: [問題] 請教一些基本問題
※ 引述《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
討論串 (同標題文章)
本文引述了以下文章的的內容:
完整討論串 (本文為第 2 之 3 篇):
C_and_CPP 近期熱門文章
PTT數位生活區 即時熱門文章