11/23
講師:吳崇維(wayne)
今日目標~
電腦使用一串的 0/1 位元,將資料
存放在記憶體裡面。
Q:電腦怎麼知道資料在記憶體的哪個地方?
A:對於每一個我們宣告的變數,電腦會存他的
記憶體位址,要取用這個變數的時候,循著
位址找到資料!
變數統整!
*(變數) // 變數需為一個位址
Ex: *(0x7ffee2b159bc)
取用一個位址所指到的變數值
&(變數)
Ex : &b
上面這東西代表一個
變數的位址
兩個互為反運算
指標,又稱為指標變數
語法 int *p = &x;
其中p就是指向整數的指標變數,
存著一個位址:x變數的位址!
上面的結果是~?
指標的宣告為
int *p = &x ;
但是寫了這行之後
*p 和 x 等價 而不是 &x
因為這時候p存的是x的位址
因此:
*p == x
&(*p) == &x
p == &x
指標可以間接的更改變數的值
這對於往後的函式,或是陣
列的理解都很有幫助!
試問:a, b[2], c, d, e, b 分別是?
(1) 整數變數
(2)指向整數的指標變數
當我們宣告 int arr[10];
這時候 arr 是一個指標,
指向arr[0]。
而arr[0], arr[1], ... arr[9]
都是一個整數
arr
指標+1相當於加上該類別的一個單位
1) 我們一共宣告了2*3*4 = 24個整數
2) a[1][2][2] 就是裡面其中一個整數
3) a[1][2] 是一個一維陣列 !
4) a[1] 是一個二維陣列
5) a 就是個三維陣列啦~
如果宣告 : int a[3][5];
ex: 希望a[4][6]可以有24這個值
Tools: 兩層for迴圈,一個兩維陣列
所以可以先宣告 int a[10][10];
費氏數列:
1 , 1, 2, 3, 5, 8, 13, 21, ....
第一二項都是1
接著每一項都是前兩項的和
試著用陣列達成:
求出這個數列第20項的值
一起努力快樂寫程式吧!