struct
Định nghĩa
Struct là một tập hợp các phần tử dữ liệu cùng kiểu hoặc khác kiểu được gộp chung thành một nhóm. Các phần tử này được gọi là thành viên của struct.
Cú pháp
- struct <Tên struct>
- {
- <Kiểu dữ liệu thành viên số 1> <Tên thành viên số 1>;
- <Kiểu dữ liệu thành viên số 2> <Tên thành viên số 2>;
- …
- };
Ví dụ
- struct Subject
- {
- string m_name_subject;
- string m_pre_subject;
- int m_hour_per_week;
- string m_trainer;
- };
Sử dụng struct
- Để truy cập vào các thành viên của struct ta sử dụng toán tử dấu chấm (.)đặt giữa tên biến kiểu struct và tên thành viên của struct cần truy cập.
- Một biến thuộc kiểu struct cũng có thể trở thành tham số của một hàm.
- Có thể truy cập thành phần của struct thông qua biến con trỏ.
Để rõ hơn, các bạn có thể theo dõi đoạn mã nguồn dưới đây:
- #include <iostream>
- #include <string>
- using namespace std;
- /*Declare a struct called Subject*/
- struct Subject
- {
- string m_name_subject; //delare member types
- string m_pre_subject;
- int m_hour_per_week;
- string m_trainer;
- };
- void PrintSubjectInformation(Subject object)
- {
- cout << object.m_name_subject << endl;
- cout << object.m_trainer << endl;
- cout << object.m_hour_per_week << endl;
- cout << object.m_pre_subject << endl;
- }
- int main()
- {
- Subject subject;
- // Access the member of struct Subject through subject
- subject.m_name_subject = "Game Programming";
- subject.m_pre_subject = "Basic Programming";
- subject.m_hour_per_week = 4;
- subject.m_trainer = "Brian Vu";
- PrintSubjectInformation(subject);
- return 0;
- }
union
Định nghĩa
Cũng giống như struct, union là một tập hợp các phần tử dữ liệu cùng kiểu hoặc khác kiểu được gộp chung thành một nhóm. Các phần tử này được gọi là thành viên của union
Cú pháp
- union <Tên struct>
- {
- <Kiểu dữ liệu thành viên số 1> <Tên thành viên số 1>;
- <Kiểu dữ liệu thành viên số 2> <Tên thành viên số 2>;
- …
- };
Ví dụ
- union <Tên struct>
- {
- <Kiểu dữ liệu thành viên số 1> <Tên thành viên số 1>;
- <Kiểu dữ liệu thành viên số 2> <Tên thành viên số 2>;
- …
- };
Sử dụng union
- Để truy cập vào các thành viên của union ta sử dụng toán tử dấu chấm (.)đặt giữa tên biến kiểu union và tên thành viên của union cần truy cập.
- Một biến thuộc kiểu union cũng có thể trở thành tham số của một hàm.
- Có thể truy cập thành viên của union thông qua biến con trỏ.
Để rõ hơn, các bạn có thể theo dõi đoạn mã nguồn dưới đây:
- #include <iostream>
- using namespace std;
- /* Declare */
- union Post
- {
- int m_iValue;
- float m_fValue; //delare member types
- long m_lValue;
- };
- void PrintSubjectInformation(Post post)
- {
- cout << post.m_iValue << endl;
- cout << post.m_fValue << endl;
- cout << post.m_lValue << endl;
- }
- int main()
- {
- Post post;
- post.m_iValue = 169; // Access the member of union
- post.m_fValue = 39.01;
- post.m_lValue = 123;
- PrintSubjectInformation(post);
- return 0;
- }
Output
Khi thay đổi giá trị post.m_lValue = 123;. Ta đã làm ảnh hướng đến giá trị của các thành viên còn lại. Điều này sẽ được giải thích ở phần sau.
So sánh struct và union
Về mặt ý nghĩa, struct và union cơ bản giống nhau. Tuy nhiên, về mặt lưu trữ trong bộ nhớ, chúng có sự khác biệt rõ rệt như sau:
- struct:Dữ liệu của các thành viên của struct được lưu trữ ở những vùng nhớ khác nhau. Do đó kích thước của một struct chắc chắn lớn hơn kích thước của các thành viên cộng lại.
Tại sao lại lớn hơn kích thước của thành viên?
Lý do
Tùy thuộc và kích thước của khối nhớ do hệ thống quy định.
Ví dụ
Hệ thống quy định khối nhớ là 1 byte, thì kích thước của kiểu dữ liệu sSinhVien là 13 byte.
- struct sSinhVien
- {
- char m_id[5];
- float m_height;
- float m_weight;
- };
- union: với union, các thành viên sẽ dùng chung một vùng nhớ. Kích thước của union được tính là kích thước lớn nhất của kiểu dữ liệu trong union. Việc thay đổi nội dung của một thành viên sẽ dẫn đến thay đổi nội dung của các thành viên khác.
0 comments:
Post a Comment