奧林匹亞資訊班

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!

一起努力快樂寫程式吧!

Made with Slides.com