二維陣列
陣列是一組相同元素的集合.
陣列的建立方式:
type_t arr_name [const_n];
// type_t 是指數組的元素型別
// const 是乙個 常量表示式,用來指定陣列的大小
陣列建立的例項:
// **1
int arr1[10]
;// **2
int count =10;
int arr2[count]
;// **3
char arr3[10]
;float arr4[1]
;double arr5[20]
;
注: 陣列建立,[ ]
中要給定乙個常量才可以,不能使用變數.
陣列的初始化是指,在建立陣列的同時給陣列的內容一些合理的初始值(初始化).
int arr1[10]
=;int arr2=
;int arr3[5]
=;char arr4[3]
=;char arr5=
;char arr6=
"abcdefg"
;
陣列在建立的時候如果想要不指定陣列確定的大小就要初始化.
陣列的元素個數根據初始化的內容確定.
對於陣列的使用我們之前的介紹了乙個操作符下標引用操作符,它其實就是陣列訪問操作符.
#include
int main()
;//陣列的不完全初始化
int size =
sizeof
(arr)
/sizeof
(arr[0]
);//計算陣列元素個數
//對陣列的內容賦值,陣列是使用下標來訪問的,下標從0開始,所以:
int i =0;
//作為下標
for(i =
0;i < size;i++
)//輸出陣列的內容
for(i =
0;i < size;i++
)return0;
}
陣列是使用下標來訪問的,下標是從0開始的.
陣列的大小可以通過計算(sizeof)得到的.
int arr[10]
;int size =
sizeof
(arr)
/sizeof
(arr[0]
);
接下來我們**陣列在記憶體中的儲存:
#include
int main()
; int i =0;
for(i =
0;i <
sizeof
(arr)
/sizeof
(arr[0]
);++i)
return0;
}
輸出結果如下:
從執行結果中我們可以看到:
二維陣列其實本質上也是一位陣列,不過這個一維陣列中的元素也是一維陣列.
這樣的思維可以擴充套件到多維陣列,如 三維陣列也可以看成乙個一維陣列,不過其中元素是二維陣列罷了.
//二維陣列的建立
int arr[3]
[4];
//這裡的[3][4]是指乙個長度為 3 的一維陣列
//其中每個元素是乙個長度為 4 的一維陣列
char arr[3]
[5];
double arr[2]
[4];
//其他型別定義同理
//二維陣列的初始化
int arr[3]
[4]=
;int arr[3]
[4]=
,};int arr[
4]=,
};
二維陣列的使用也是通過下標的方式:
#include
int main()
; int i =0;
for(i =
0;i <
3; i++)}
return0;
}
#include
int main()
}return0;
}
程式輸出結果為:
通過分析結果我們得知,二維陣列在記憶體中也是連續儲存的.
在我們程式編寫過程中,也會將陣列作為引數傳遞給某個函式。
比如:實現乙個氣泡排序函式,將乙個整型陣列排序。
#include
void
bubble_sort
(int arr)
int main()
;bubble_sort
(arr)
;for
(int i =
0;i <
sizeof
(arr)
/sizeof
(arr[0]
);++i)
return0;
}
我們執行完這段**,結果並不如我們預期一樣,為什麼呢?
那麼**如何進行改進呢?
void
bubble_sort
(int arr[
],int size)
陣列作為函式引數時,不會把整個陣列傳遞進去,實際上只是把陣列首元素位址傳遞進去了,所以即使在函式引數部分寫成陣列的形式,表示的依然是乙個指標如:int arr
表示的是int* arr
.
若果陣列作為引數傳參,函式內部需要知道陣列元素個數。
應該在函式外部算出元素個數,並且作為引數傳遞給函式,這樣可以通過指標與陣列元素搭配的方法等效替代傳遞陣列。
第四章 陣列
一維陣列的定義 當陣列中每個元素只帶有乙個下標時,我們稱這樣的陣列為一維陣列。陣列的定義格式如下 型別識別符號 陣列名 常量表示式 說明 陣列名的命名規則與變數名的命名規則一致。常量表示式表示陣列元素的個數。可以是常量和符號常量,但不能是變數。例如 int a 10 陣列a定義是合法的 int b ...
第四章 陣列操作
1 scala陣列操作 1.1 定義定長陣列 scala val arr1 new array int 5 arr1 array int array 0,0,0,0,0 列印陣列後,輸出位址 scala println arr1 i 199e4c2b 呼叫陣列物件的tobuffer方法 scala ...
C 第四章習題
1 定義乙個複數類complex,過載運算子 使之能用於複數的加法運算。將運算子函式過載為非成員 非友元的普通函式。程式設計序,求兩個複數之和。2 定義乙個複數類complex,過載運算子 使之能用於複數的加減乘除。運算子過載函式作為complex類的成員函式。程式設計序,分別求兩個複數之和 差 積...