|11 指標與陣列
|範例:陣列位址 陣列 a 的位址:0022FF50 元素 a[0] 的位址:0022FF50 元素 a[1] 的位址:0022FF54 11.1 陣列的位址 |範例:陣列位址 陣列 a 的位址:0022FF50 元素 a[0] 的位址:0022FF50 元素 a[1] 的位址:0022FF54 元素 a[2] 的位址:0022FF58 元素 a[3] 的位址:0022FF5C 元素 a[4] 的位址:0022FF60 元素 a[5] 的位址:0022FF64 3 2 1 | 陣列結構與位址配置 >>
11.1 陣列的位址 |陣列結構與位址配置 << 範例:陣列位址 陣列與一般變數的位址配置比較 >>
11.1 陣列的位址 |陣列與一般變數的位址配置比較 int x ; << 陣列結構與位址配置 範例:陣列的值 >>
|範例:陣列的值 陣列 a 的位址:0022FF50 陣列 a 的值:0022FF50 元素 a[0] 的值:00000064 11.1 陣列的位址 |範例:陣列的值 陣列 a 的位址:0022FF50 陣列 a 的值:0022FF50 元素 a[0] 的值:00000064 元素 a[1] 的值:000000C8 4 3 2 1 << 陣列與一般變數的位址配置比較 位址與值 >>
11.1 陣列的位址 |位址與值 << 範例:陣列的值 指標與陣列元素關聯 >>
|指標與陣列元素關聯 11.2 陣列指標與元素存取 11.2.1 透過指標存取陣列元素 << 位址與值 11.2 陣列指標與元素存取 |指標與陣列元素關聯 11.2.1 透過指標存取陣列元素 << 位址與值 範例:陣列元素位址 >>
|範例:陣列元素位址 a:0022FF50 , a[0]:0022FF50 a+1:0022FF54 , a[1]:0022FF54 11.2 陣列指標與元素存取 |範例:陣列元素位址 11.2.1 透過指標存取陣列元素 a:0022FF50 , a[0]:0022FF50 a+1:0022FF54 , a[1]:0022FF54 a+2:0022FF58 , a[2]:0022FF58 a+3:0022FF5C , a[3]:0022FF5C a+4:0022FF60 , a[4]:0022FF60 a+5:0022FF64 , a[5]:0022FF64 6 5 4 3 2 1 << 指標與陣列元素關聯 位址運算與陣列元素存取 >>
|位址運算與陣列元素存取 11.2 陣列指標與元素存取 11.2.1 透過指標存取陣列元素 << 範例:陣列元素位址 11.2 陣列指標與元素存取 |位址運算與陣列元素存取 11.2.1 透過指標存取陣列元素 << 範例:陣列元素位址 範例:陣列元素存取 >>
|範例:陣列元素存取 a[0]:100 a[1]:200 a[2]:300 11.2 陣列指標與元素存取 11.2.1 透過指標存取陣列元素 11.2 陣列指標與元素存取 |範例:陣列元素存取 11.2.1 透過指標存取陣列元素 a[0]:100 a[1]:200 a[2]:300 6 5 4 3 2 1 << 位址運算與陣列元素存取 printf() >>
|printf() a[0]:100 a[1]:200 a[2]:300 a[3]:400 a[4]:500 a[5]:600 11.2 陣列指標與元素存取 |printf() 11.2.1 透過指標存取陣列元素 a[0]:100 a[1]:200 a[2]:300 a[3]:400 a[4]:500 a[5]:600 2 1 << 範例:陣列元素存取 陣列值的修改 >>
|陣列值的修改 int a[]={100,200,300,400,500,600} ; a++ ; a=100; int *p= a ; 11.2 陣列指標與元素存取 |陣列值的修改 11.2.2 變更陣列位址值的錯誤 int a[]={100,200,300,400,500,600} ; a++ ; a=100; 陣列本身所儲存的位址值是一個常數值 嘗試修改 a 的值不被允許 第 2 行與第 3 行都會出現錯誤 int *p= a ; p++ ; 修改一般的指標變數不會有任何問題。 << printf() 位址設定操作 >>
|位址設定操作 11.2 陣列指標與元素存取 11.2.2 變更陣列位址值的錯誤 << 陣列值的修改 11.2 陣列指標與元素存取 |位址設定操作 11.2.2 變更陣列位址值的錯誤 << 陣列值的修改 陣列元素存取 >>
|陣列元素存取 p 位址:0240FF40 p 值 :100 p++ 位址:0240FF44 p++ 值 :200 11.2 陣列指標與元素存取 |陣列元素存取 11.2.2 變更陣列位址值的錯誤 陣列元素存取 p 位址:0240FF40 p 值 :100 p++ 位址:0240FF44 p++ 值 :200 a[0] 位址:0240FF40 a[0] 值 :100 a[1] 位址:0240FF44 a[1] 值 :200 6 5 4 3 2 1 << 位址設定操作 宣告儲存指標資料的陣列 >>
|宣告儲存指標資料的陣列 int *pt[i] ; pt 陣列可以儲存i 個指向特定整數值的指標 11.3 以指標為儲存元素的陣列 11.3 以指標為儲存元素的陣列 |宣告儲存指標資料的陣列 int *pt[i] ; pt 陣列可以儲存i 個指向特定整數值的指標 << 陣列元素存取 儲存不規則陣列 >>
|儲存不規則陣列 int x[3][5] ; 11.3 以指標為儲存元素的陣列 2 1 << 宣告儲存指標資料的陣列 11.3 以指標為儲存元素的陣列 |儲存不規則陣列 int x[3][5] ; 2 1 << 宣告儲存指標資料的陣列 範例:儲存指標示元素的陣列 >>
|範例:儲存指標元素的陣列 a[]: 100,200,300,400 b[]: 111,222,333,444,555 11.3 以指標為儲存元素的陣列 |範例:儲存指標元素的陣列 7 6 5 100 200 300 400 a[]: 100,200,300,400 b[]: 111,222,333,444,555 c[]: 100,300,500 4 111 222 333 444 555 3 2 100 300 500 1 << 儲存不規則陣列 二維陣列位址與元素值 >>
|二維陣列位址與元素值 int x[3][4] ; 第一個元素 x[0][0] 的位址,剛好是陣列的位址,同時也是它所儲存的值。 11.4 指標與二維陣列 |二維陣列位址與元素值 11.4.1 二維陣列位址 int x[3][4] ; 第一個元素 x[0][0] 的位址,剛好是陣列的位址,同時也是它所儲存的值。 << 範例:儲存指標元素的陣列 二維陣列位址與元素值 >>
|二維陣列位址與元素值 int x[2][3]= {{100,200,300},{111,222,333}} ; 11.4 指標與二維陣列 |二維陣列位址與元素值 11.4.1 二維陣列位址 int x[2][3]= {{100,200,300},{111,222,333}} ; x 的第 1 個元素 x[0][0] ,是第 1 個一維陣列中的第 1 個元素 100,它的位址等同於陣列 x 本身的位址,也是它的值。 << 二維陣列位址與元素值 範例:二維陣列與指標 >>
|範例:二維陣列與指標 x[0][0] 位址:0240FF40 x 位址:0240FF40 x 的值:0240FF40 11.4 指標與二維陣列 |範例:二維陣列與指標 11.4.1 二維陣列位址 x[0][0] 位址:0240FF40 x 位址:0240FF40 x 的值:0240FF40 3 2 1 << 二維陣列位址與元素值 二維陣列指標 >>
|二維陣列指標 11.4 指標與二維陣列 11.4.2 二維陣列的指標運算 << 範例:二維陣列與指標 11.4 指標與二維陣列 |二維陣列指標 11.4.2 二維陣列的指標運算 << 範例:二維陣列與指標 範例:二維陣列與指標運算 >>
|範例:二維陣列與指標運算 100 200 300 111 222 333 x[0] 的元素:100,200,300 11.4 指標與二維陣列 |範例:二維陣列與指標運算 11.4.2 二維陣列的指標運算 100 200 300 111 222 333 8 7 6 5 4 x[0] 的元素:100,200,300 x[1] 的元素:111,222,333 3 2 1 << 二維陣列指標 存取第二個一維陣列的值 >>
|存取第二個一維陣列的值 int b10 = *x[1]; int b11 = *(x[1]+1); 11.4 指標與二維陣列 |存取第二個一維陣列的值 11.4.2 二維陣列的指標運算 int b10 = *x[1]; int b11 = *(x[1]+1); int b12 = *(x[1]+2); x[1] 表示第 2 個一維陣列,因此會從第 2 個陣列的第 1 個值開始讀取 << 範例:二維陣列與指標運算 字串與陣列 >>
|字串與陣列 char str[]="ABCDE" ; char *strp = "abcde" ; 第 1 行是典型的 char 陣列 11.5 字串與陣列指標 |字串與陣列 char str[]="ABCDE" ; char *strp = "abcde" ; 第 1 行是典型的 char 陣列 第 2 行將字串指定給「指標變數」 strp 陣列本身所儲存的值便是一個位址資訊,因此可以直接指定給指標變數 << 存取第二個一維陣列的值 範例:字串 >>
|範例:字串 str位址:0240FF50 str 值:good morning cp 位址:0040121E 11.5 字串與陣列指標 |範例:字串 6 str位址:0240FF50 str 值:good morning cp 位址:0040121E cp 值:wwww.google.com 5 4 3 2 1 << 字串與陣列 字元與陣列 >>
|字元與陣列 第 1 行是傳統的二維字元陣列,可以用來儲存數個字串 第 2 行以指標陣列儲存字串 11.5 字串與陣列指標 |字元與陣列 char str[3][3]={"AAA","BBB","CCC"} ; char *cp[3] = {"aaa","bbb","ccc"} ; 第 1 行是傳統的二維字元陣列,可以用來儲存數個字串 第 2 行以指標陣列儲存字串 << 範例:字串 範例:字串陣列 >>
|範例:字串陣列 TAIWAN CHINA JAPAN USA Italy Singapore 11.5 字串與陣列指標 2 1 << 字元與陣列 |