奧林匹亞資訊班
11/23
講師:吳崇維(wayne)
今日目標~
- 在更多的陣列之前..
- 指標!
- 陣列重新理解
- 多維陣列
指標 (pointer)
記憶體
電腦使用一串的 0/1 位元,將資料
存放在記憶體裡面。
Q:電腦怎麼知道資料在記憶體的哪個地方?
A:對於每一個我們宣告的變數,電腦會存他的
記憶體位址,要取用這個變數的時候,循著
位址找到資料!
一個 & 符號代表取用變數的位址
一個 * 符號代表取用該位址的值
變數統整!
* 符號
*(變數) // 變數需為一個位址
Ex: *(0x7ffee2b159bc)
取用一個位址所指到的變數值
& 符號
&(變數)
Ex : &b
上面這東西代表一個
變數的位址
兩個互為反運算
重點!
對於 &b 這樣的位址
我們要怎麼用變數記住他的值呢?
pointer
指標,又稱為指標變數
語法 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相當於加上該類別的一個單位
多維陣列
int a[2][3][4];
1) 我們一共宣告了2*3*4 = 24個整數
2) a[1][2][2] 就是裡面其中一個整數
3) a[1][2] 是一個一維陣列 !
4) a[1] 是一個二維陣列
5) a 就是個三維陣列啦~
示意圖
如果宣告 : int a[3][5];
練習一下!
把99乘法表的結果紀錄在陣列
ex: 希望a[4][6]可以有24這個值
Tools: 兩層for迴圈,一個兩維陣列
所以可以先宣告 int a[10][10];
本日作業!
費氏數列:
1 , 1, 2, 3, 5, 8, 13, 21, ....
第一二項都是1
接著每一項都是前兩項的和
試著用陣列達成:
求出這個數列第20項的值
FeedBack!
一起努力快樂寫程式吧!
class 11/23 指標及陣列
By Wayne Wu
class 11/23 指標及陣列
- 55