在 C++ 中,結構體(struct
)是用於組合多個變數(可以是不同型別)的資料型別。以下是建立結構體並賦值的基本方法:
1. 定義結構體並賦值
示例程式碼:
#include <iostream>
#include <string>
using namespace std;
// 定義結構體
struct Person {
string name;
int age;
float height;
};
int main() {
// 初始化並賦值方式 1:列表初始化
Person person1 = {"Alice", 25, 5.6};
// 初始化並賦值方式 2:分步賦值
Person person2;
person2.name = "Bob";
person2.age = 30;
person2.height = 6.0;
// 輸出結果
cout << "Person 1: " << person1.name << ", " << person1.age << " years old, " << person1.height << " ft" << endl;
cout << "Person 2: " << person2.name << ", " << person2.age << " years old, " << person2.height << " ft" << endl;
return 0;
}
2. 用建構函式賦值(C++11 起支援)
在 C++ 中,結構體可以像類一樣定義建構函式,用來更方便地初始化。
示例程式碼:
#include <iostream>
#include <string>
using namespace std;
// 定義結構體
struct Person {
string name;
int age;
float height;
// 建構函式
Person(string n, int a, float h) : name(n), age(a), height(h) {}
};
int main() {
// 使用建構函式初始化
Person person1("Charlie", 28, 5.9);
// 輸出結果
cout << "Person: " << person1.name << ", " << person1.age << " years old, " << person1.height << " ft" << endl;
return 0;
}
3. 動態分配結構體
如果需要在堆上動態分配結構體,可以使用 new
關鍵字。
示例程式碼:
#include <iostream>
#include <string>
using namespace std;
// 定義結構體
struct Person {
string name;
int age;
float height;
};
int main() {
// 動態分配
Person* person = new Person{"Daisy", 22, 5.7};
// 輸出結果
cout << "Person: " << person->name << ", " << person->age << " years old, " << person->height << " ft" << endl;
// 釋放記憶體
delete person;
return 0;
}
4. C++20 起支援聚合初始化增強
在 C++20 中,可以使用設計器語法(designated initializers
)來更明確地初始化結構體的成員。
示例程式碼:
#include <iostream>
#include <string>
using namespace std;
// 定義結構體
struct Person {
string name;
int age;
float height;
};
int main() {
// 使用 C++20 的設計器語法
Person person1 = {.name = "Eve", .age = 26, .height = 5.8};
// 輸出結果
cout << "Person: " << person1.name << ", " << person1.age << " years old, " << person1.height << " ft" << endl;
return 0;
}
總結:
- 可以透過直接賦值或列表初始化對結構體賦值。
- 使用建構函式可以使程式碼更清晰。
- 動態分配適用於需要靈活管理記憶體的場景。
- C++20 的設計器語法增強了可讀性。