陣列
初始化值
資料型態 陣列名[長度] = {值1, 值2, 值3 …};
若值的數量比長度小,沒有在括號{}中的值預設為0。
1
2
3
4
5
6
7
int main() {
int arr[10] = {0,1,2,3};
for (int i = 0; i < sizeof(arr)/sizeof(int); i++) {
cout << "arr[" << i << "] = " << arr[i] << endl;
}
return 0;
}
arr[0] = 0
arr[1] = 1
arr[2] = 2
arr[3] = 3
arr[4] = 0
arr[5] = 0
arr[6] = 0
arr[7] = 0
arr[8] = 0
arr[9] = 0
資料型態 陣列名[] = {值1, 值2, 值3 …};
陣列長度
陣列的長度可以用常數、運算式。
常數
1
2
3
4
5
6
7
8
9
10
11
#include <iostream>
using namespace std;
//使用常數
const int ARR_MAX = 10;
int main() {
int arr[ARR_MAX] = {0,1,2,3};
for (int i = 0; i < sizeof(arr)/sizeof(int); i++) {
cout << "arr[" << i << "] = " << arr[i] << endl;
}
return 0;
}
arr[0] = 0
arr[1] = 1
arr[2] = 2
arr[3] = 3
arr[4] = 0
arr[5] = 0
arr[6] = 0
arr[7] = 0
arr[8] = 0
arr[9] = 0
運算式
1
2
3
4
5
6
7
8
9
10
11
12
13
#include <iostream>
using namespace std;
int main() {
double d = 10;
//使用運算式設定陣列長度
int arr[sizeof(d)/2] = {0,1,2,3};
int size = sizeof(arr)/sizeof(int);
cout << "arr size = " << size << endl;
for (int i = 0; i < size; i++) {
cout << "arr[" << i << "] = " << arr[i] << endl;
}
return 0;
}
arr size = 4
arr[0] = 0
arr[1] = 1
arr[2] = 2
arr[3] = 3
陣列中有多少元素?
sizeof(陣列名) / sizeof(陣列資料型態) = 元素個數
sizeof(陣列名) 是取得這個陣列占記憶體的大小。 sizeof(資料型態) 是取得資料資料型態占的記憶體大小,如int占4byte,double占8byte,char占1byte。
陣列中每一個值都初始化為整數0
以下二種寫法都是一樣,初始化為整數0。
資料型態 陣列名[長度] = {0};
資料型態 陣列名[長度] = {};
1
2
3
4
5
6
7
8
9
10
11
12
13
14
#include <iostream>
using namespace std;
int main() {
int arr[10] = {0};
for (int i = 0; i < sizeof(arr)/sizeof(int); i++) {
cout << "arr[" << i << "] = " << arr[i] << endl;
}
int arr1[10] = {};
for (int i = 0; i < sizeof(arr1)/sizeof(int); i++) {
cout << "arr1[" << i << "] = " << arr1[i] << endl;
}
return 0;
}
執行結果
arr[0] = 0
arr[1] = 0
arr[2] = 0
arr[3] = 0
arr[4] = 0
arr[5] = 0
arr[6] = 0
arr[7] = 0
arr[8] = 0
arr[9] = 0
arr1[0] = 0
arr1[1] = 0
arr1[2] = 0
arr1[3] = 0
arr1[4] = 0
arr1[5] = 0
arr1[6] = 0
arr1[7] = 0
arr1[8] = 0
arr1[9] = 0
memset陣列清空
陣列中每個元素記憶體位址的值設為00000000。
void* memset(void *s, int c, size_t n);
- 參數1 : 陣列名
- 參數2 : 整數0
- 參數3 : 陣列記憶體大小
1
2
3
4
5
6
7
8
9
10
11
12
13
#include <iostream>
using namespace std;
int main() {
int arr[10] = {1,2,3,4,5,6,7,8,9};
for (int i = 0; i < sizeof(arr)/sizeof(int); i++) {
cout << "arr[" << i << "] = " << arr[i] << endl;
}
memset(arr, 0, sizeof(arr));
for (int i = 0; i < sizeof(arr)/sizeof(int); i++) {
cout << "arr[" << i << "] = " << arr[i] << endl;
}
return 0;
}
執行結果
arr[0] = 1
arr[1] = 2
arr[2] = 3
arr[3] = 4
arr[4] = 5
arr[5] = 6
arr[6] = 7
arr[7] = 8
arr[8] = 9
arr[9] = 0
arr[0] = 0
arr[1] = 0
arr[2] = 0
arr[3] = 0
arr[4] = 0
arr[5] = 0
arr[6] = 0
arr[7] = 0
arr[8] = 0
arr[9] = 0
memcpy() 複製陣列,記憶體內容複製
複製全部元素
陣列中全部的元素(來源陣列)複製到另一個大小相同的陣列(目標陣列)。
需要引入函式庫#include
- 參數1 : 目標陣列
- 參數2 : 來源陣列
- 參數3 : 陣列記憶體大小,或使用者自行定義要複製的byte。
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
#include <iostream>
using namespace std;
int main() {
//來源陣列
int arr[10] = {1,2,3,4,5,6,7,8,9,10};
for (int i = 0; i < sizeof(arr)/sizeof(int); i++) {
cout << "arr[" << i << "] = " << arr[i] << endl;
}
//目標陣列
int arr1[sizeof(arr) / sizeof(int)];
memcpy(arr1, arr, sizeof(arr));
for (int i = 0; i < sizeof(arr1)/sizeof(int); i++) {
cout << "arr1[" << i << "] = " << arr1[i] << endl;
}
return 0;
}
arr[0] = 1
arr[1] = 2
arr[2] = 3
arr[3] = 4
arr[4] = 5
arr[5] = 6
arr[6] = 7
arr[7] = 8
arr[8] = 9
arr[9] = 10
arr1[0] = 1
arr1[1] = 2
arr1[2] = 3
arr1[3] = 4
arr1[4] = 5
arr1[5] = 6
arr1[6] = 7
arr1[7] = 8
arr1[8] = 9
arr1[9] = 10
複製部分元素
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
#include <iostream>
using namespace std;
int main() {
//來源陣列
int arr[10] = {1,2,3,4,5,6,7,8,9,10};
for (int i = 0; i < sizeof(arr)/sizeof(int); i++) {
cout << "arr[" << i << "] = " << arr[i] << endl;
}
//目標陣列
//元素全初始化為整數0
int arr1[sizeof(arr) / sizeof(int)] = {0};
//只複製arr陣列8byte的元素
//(8byte/每個元素是4byte)=2,只複製2個元素
memcpy(arr1, arr, 8);
for (int i = 0; i < sizeof(arr1)/sizeof(int); i++) {
cout << "arr1[" << i << "] = " << arr1[i] << endl;
}
return 0;
}
arr[0] = 1
arr[1] = 2
arr[2] = 3
arr[3] = 4
arr[4] = 5
arr[5] = 6
arr[6] = 7
arr[7] = 8
arr[8] = 9
arr[9] = 10
arr1[0] = 1
arr1[1] = 2
arr1[2] = 0
arr1[3] = 0
arr1[4] = 0
arr1[5] = 0
arr1[6] = 0
arr1[7] = 0
arr1[8] = 0
arr1[9] = 0