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的位置假設是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
討論串 (同標題文章)
本文引述了以下文章的的內容:
完整討論串 (本文為第 3 之 3 篇):
C_and_CPP 近期熱門文章
PTT數位生活區 即時熱門文章