結構體的定義
在C++中,結構體(struct
)是一種用戶定義的數據類型,允許將不同類型的數據組合在一起。結構體的定義使用struct
關鍵字,后跟結構體名稱和一對花括號{}
,花括號內包含成員變量的聲明。
struct Person {std::string name;int age;double height;
};
結構體的實例化
結構體定義后,可以像基本數據類型一樣聲明結構體變量。結構體變量的成員可以通過點運算符.
訪問。
Person person1;
person1.name = "Alice";
person1.age = 25;
person1.height = 1.68;
結構體的初始化
結構體變量可以在聲明時進行初始化,使用花括號{}
列出成員變量的初始值。
Person person2 = {"Bob", 30, 1.75};
結構體與函數
結構體可以作為函數的參數和返回值。通過傳遞結構體變量,可以在函數中操作結構體的成員。
void printPerson(const Person& p) {std::cout << "Name: " << p.name << ", Age: " << p.age << ", Height: " << p.height << std::endl;
}Person createPerson(const std::string& name, int age, double height) {Person p = {name, age, height};return p;
}
結構體與指針
結構體指針可以通過箭頭運算符->
訪問結構體成員。結構體指針常用于動態內存分配和函數參數傳遞。
Person* ptr = &person1;
std::cout << "Name: " << ptr->name << std::endl;
結構體與數組
結構體可以用于定義數組,數組中的每個元素都是一個結構體變量。
Person people[3] = {{"Alice", 25, 1.68},{"Bob", 30, 1.75},{"Charlie", 35, 1.80}
};
結構體與類
在C++中,結構體與類(class
)非常相似,主要區別在于默認的訪問控制。結構體的成員默認是public
,而類的成員默認是private
。
class Employee {
public:std::string name;int id;
};
結構體的嵌套
結構體可以嵌套定義,即一個結構體可以包含另一個結構體作為其成員。
struct Address {std::string city;std::string street;
};struct Employee {std::string name;int id;Address address;
};
結構體與聯合體
結構體與聯合體(union
)不同,聯合體的所有成員共享同一塊內存,而結構體的每個成員都有獨立的內存空間。
union Data {int i;double d;char c;
};
結構體的應用場景
結構體常用于表示復雜的數據結構,如鏈表、樹、圖等。結構體還可以用于封裝數據,提高代碼的可讀性和可維護性。
struct Node {int data;Node* next;
};
通過以上介紹,可以了解到C++中結構體的基本概念、使用方法以及應用場景。結構體是C++中一種非常靈活且強大的工具,能夠有效地組織和處理復雜的數據。