C 語言特性 :陣列
何為陣列
Objc 透過陣列的資料結構,讓我們能夠定義 具有排序的資料項目。- 本篇重點:定義陣列,並加以運用。
x [ i ]運算式
grades [ 3 ]可以將陣列中的個別原素指定為變數
g = grades [ i ];
陣列範例
第一個元素為 grades [ 0 ]
grades [ 0 ] grades [ 1 ] grades [ 2 ] grades [ 3 ] 第一個元素 第二個元素 第三個元素 第個元素
與其他變數一樣使用前,必須先先宣告。宣告陣列中的元素資料形態,像是 int、float 或是物件,最後再補上陣列元素的個數。
fraction * fract [100]; // 物件
下標 ( subscript ) |
索引 ( index ) |
陣列的初始化
定義變數時,可以直接指定數值。相同的,陣列也可以直接指定初始值。int integers [ 5 ] = { 0, 1, 2 , 3, 4 };
將初始值寫入在『 { } 』之間,並且每一個元素以『 , 』隔開。
同樣的,字元陣列的初始值也是以相同的方式呈現
int letters [ 5 ] = { 'a', 'b', 'c', 'd', 'e' };將 'a'、 'b'、 'c'、 'd'、 'e' 指定給 letters 陣列中的前五項元素。
但我們並不需要初始化全部的元素值,若只初始化一個元素值,則其他元素將被初始化為 0,方法如下。
float data [ 5 ] = { 20.0, 34.0, 40.5 };前三個元素分別為:20.0、 34.0、 40.5 ,剩餘的元素都會被預設為 0 。
另外也可以特別指定數值給其中幾項,寫法如下。
int x = 31;
int a [ ] = { [ 2 ] = x +1, [ 5 ] = 12, [ 32 ] = 1};a [ ] 被定義內含有 33 項的元素大小,a[ 2 ]、a[ 5 ]、a[ 32 ] 三項元素,分別為 33、12 、1。
字元陣列
(範例)
- char word [ ] = { 'H', 'e', 'l', 'l', 'o' };
- int i ;
- for ( i = 0, i < 4 , i++ )
- NSLog ( "%c", word [ i ] );
若在陣列元素的最後面加上 ‘\0' 空字元,表示建立了『 字串 』。
所以我們在輸出字串的時候,可以使用 %s 格式告訴NSLog持續印出字串,一直到 '\0' 停止。
如下:
- char word [ ] = { 'H', 'e', 'l', 'l', 'o', '\0' };
- NSLog ( "%s",word );
多維陣列
上一個篇所看到的都是線性陣列 ( linear array ),接下來的重點在於介紹多為陣列。
下方就是二為陣列的範例,二維陣列又被稱為矩陣 ( matrix )。
下方就是二為陣列的範例,二維陣列又被稱為矩陣 ( matrix )。
二維陣列在數學式中使用雙下標來表示 :
12 1 67 -21 2 -23 -3 0 6 87 123 8
在程式中則會這樣表達 :
i 代表橫向的列,j 代表縱向的行
M [ i ] [ j ]若將第二列第一行的值 ( 2 ) 與第一列第四行的值 ( -21 ) 相加,並將其結果 ( -19 ) 指定給sum,該如何表示:
sum = M [ 1 ][ 0 ] + M [ 0 ][ 3 ]若要將M定義為 3 列 4 行的二維陣列,一共20個元素,每一元素都為整數,該如何表示:
- int M [ 3 ] [ 4 ] = {
- { 12, 1, 67, -21},
- { 2, -23, -3, 0},
- { 6, 87, 123, 8}
- };
需要注意:
- 二為陣列初始化以『列』為排序主軸。
- 使用『 { } 』來區分開每一列,並用『 , 』區隔開來。
多為陣列與一為陣列相同,只要不指定其初始值,都預設初始為 0 。
留言
張貼留言