結構陣列
Prerequisites:
結構陣列的宣告方式
結構 陣列名[陣列大小];
Student students[size];
結構陣列指定元素
使用.運算子
完整程式碼
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
#include <iostream>
using namespace std;
typedef struct{
//學生姓名
char name[100];
//學號
int id;
}Student;
int main() {
int size = 3;
//建立三個學生
Student students[size];
//清空資料
//參數1是地址,student陣列名就是陣列記憶體的開始位址
memset(students, 0, sizeof(students));
strcpy(students[0].name,"Bill");
students[0].id = 1;
strcpy(students[1].name,"Mary");
students[1].id = 2;
strcpy(students[2].name,"Jeff");
students[2].id = 3;
for(int i = 0; i < size; i++) {
cout << "id = " << students[i].id;
cout << ", name = " << students[i].name << endl;
}
return 0;
}
id = 1, name = Bill
id = 2, name = Mary
id = 3, name = Jeff
使用大括號{}
C++11以上才能使用。
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
#include <iostream>
using namespace std;
typedef struct{
//學生姓名
char name[100];
//學號
int id;
}Student;
int main() {
int size = 3;
//建立三個學生
Student students[size];
//清空資料
//參數1是地址,student陣列名就是陣列記憶體的開始位址
memset(students, 0, sizeof(students));
students[0] = {"Bill",1};
students[1] = {"Mary",2};
students[2] = {"Jeff",3};
for(int i = 0; i < size; i++) {
cout << "id = " << students[i].id;
cout << ", name = " << students[i].name << endl;
}
return 0;
}
id = 1, name = Bill
id = 2, name = Mary
id = 3, name = Jeff
使用指標運算取值
使用箭頭->方式取值,括號()前面不需要加上星號*
(陣列名 + 元素索引index)->結構成
1
(students+0)->id
完整程式碼
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
#include <iostream>
using namespace std;
typedef struct{
//學生姓名
char name[100];
//學號
int id;
}Student;
int main() {
int size = 3;
//建立三個學生
Student students[size];
//清空資料
//參數1是地址,student陣列名就是陣列記憶體的開始位址
memset(students, 0, sizeof(students));
students[0] = {"Bill",1};
students[1] = {"Mary",2};
students[2] = {"Jeff",3};
cout << "id = " << (students+0)->id;
cout << ", name = " << (students+0)->name << endl;
for(int i = 0; i < size; i++) {
cout << "id = " << (students+i)->id;
cout << ", name = " << (students+i)->name << endl;
}
return 0;
}
id = 1, name = Bill
id = 1, name = Bill
id = 2, name = Mary
id = 3, name = Jeff
使用指標運算指定值
*(陣列名 + 元素索引index) = {值1,值2, ...};
1
2
3
*(students + 0) = {"Bill",1};
*(students + 1) = {"Mary",2};
*(students + 2) = {"Jeff",3};
完整程式碼
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
#include <iostream>
using namespace std;
typedef struct{
//學生姓名
char name[100];
//學號
int id;
}Student;
int main() {
int size = 3;
//建立三個學生
Student students[size];
//清空資料
//參數1是地址,student陣列名就是陣列記憶體的開始位址
memset(students, 0, sizeof(students));
*(students + 0) = {"Bill",1};
*(students + 1) = {"Mary",2};
*(students + 2) = {"Jeff",3};
cout << "id = " << (students+0)->id;
cout << ", name = " << (students+0)->name << endl;
for(int i = 0; i < size; i++) {
cout << "id = " << (students+i)->id;
cout << ", name = " << (students+i)->name << endl;
}
return 0;
}