Cấu trúc trong C ++ là gì?
Một struct là C ++ cấu trúc dữ liệu có thể được sử dụng để lưu trữ cùng các yếu tố của các loại dữ liệu khác nhau. Trong C ++, cấu trúc là kiểu dữ liệu do người dùng định nghĩa. Cấu trúc tạo ra một kiểu dữ liệu để nhóm các mục có kiểu dữ liệu khác nhau thành một kiểu dữ liệu duy nhất.
Ví dụ:
Giả sử bạn cần lưu trữ thông tin về một người nào đó, tên, quốc tịch và tuổi của họ. Bạn có thể tạo các biến như tên, quốc tịch và tuổi để lưu trữ dữ liệu một cách riêng biệt.
Tuy nhiên, bạn có thể cần lưu trữ thông tin về nhiều người trong tương lai. Nó có nghĩa là các biến cho các cá nhân khác nhau sẽ được tạo. Ví dụ: tên1, quốc tịch1, tuổi1, v.v. Để tránh điều này, tốt hơn là tạo một cấu trúc.
Trong hướng dẫn C ++ này, bạn sẽ học:
- Cấu trúc trong C ++ là gì?
- Khi nào sử dụng một cấu trúc?
- Khởi tạo cấu trúc C ++
- Tạo các phiên bản cấu trúc
- Truy cập thành viên cấu trúc
- Con trỏ đến cấu trúc
- Cấu trúc dưới dạng đối số hàm
- Giới hạn của cấu trúc C ++
Khi nào sử dụng một cấu trúc?
Dưới đây là một số lý do sử dụng cấu trúc trong C ++.
- Sử dụng cấu trúc khi bạn cần lưu trữ các phần tử của các kiểu dữ liệu khác nhau dưới một kiểu dữ liệu.
- Các cấu trúc C ++ là một kiểu giá trị chứ không phải là một kiểu tham chiếu. Sử dụng cấu trúc nếu bạn không có ý định sửa đổi dữ liệu của mình sau khi tạo.
Khởi tạo cấu trúc C ++
Để tạo một cấu trúc C ++, chúng tôi sử dụng từ khóa struct, theo sau là một định danh. Định danh trở thành tên của cấu trúc. Đây là cú pháp để tạo cấu trúc C ++:
Cú pháp:
struct struct_name{// struct members}
Trong cú pháp trên, chúng ta đã sử dụng từ khóa struct. Struct_name là tên của cấu trúc.
Các thành viên cấu trúc được thêm vào trong dấu ngoặc nhọn. Các thành viên này có thể thuộc về các kiểu dữ liệu khác nhau.
Ví dụ:
struct Person{char name[30];int citizenship;int age;}
Trong ví dụ trên, Person là một cấu trúc có ba thành viên. Các thành viên bao gồm tên, quốc tịch và tuổi. Một thành viên thuộc kiểu dữ liệu char, trong khi 2 thành viên còn lại là số nguyên khi một cấu trúc được tạo, bộ nhớ không được cấp phát. Bộ nhớ chỉ được cấp phát sau khi một biến được thêm vào cấu trúc.
Tạo các phiên bản cấu trúc
Trong ví dụ trên, chúng ta đã tạo một cấu trúc có tên là Person. Chúng ta có thể tạo một biến struct như sau:
Person p;
P là một biến cấu trúc kiểu Person. Chúng ta có thể sử dụng biến này để truy cập các thành viên của cấu trúc.
Truy cập thành viên cấu trúc
Để truy cập các thành viên struct, chúng tôi sử dụng phiên bản của struct và toán tử dấu chấm (.). Ví dụ: để truy cập tuổi thành viên của struct Person:
p.age = 27;
Chúng tôi đã truy cập tuổi thành viên của struct Person bằng cách sử dụng phiên bản của struct, p. Sau đó, chúng tôi đã đặt giá trị của tuổi thành viên là 27.
Ví dụ 1:
#includeusing namespace std;struct Person{int citizenship;int age;};int main(void) {struct Person p;p.citizenship = 1;p.age = 27;cout << "Person citizenship: " << p.citizenship << endl;cout << "Person age: " << p.age << endl;return 0;}
Đầu ra:
Đây là ảnh chụp màn hình của mã:
Giải thích mã:
- Bao gồm tệp tiêu đề iostream trong chương trình của chúng tôi để sử dụng các chức năng được định nghĩa trong đó.
- Bao gồm không gian tên std để sử dụng các lớp của nó mà không cần gọi nó.
- Tạo một cấu trúc có tên là Person.
- Phần đầu của phần thân struct.
- Tạo một thành viên struct có tên là công dân kiểu số nguyên.
- Tạo một thành viên cấu trúc có tên là age của kiểu số nguyên.
- Phần cuối của phần thân struct.
- Gọi hàm main (). Logic chương trình nên được thêm vào trong phần thân của hàm này.
- Tạo một thể hiện của struct Person và đặt tên là p.
- Đặt giá trị của quyền công dân của thành viên struct thành 1.
- Đặt giá trị của độ tuổi thành viên struct thành 27.
- In giá trị của quyền công dân thành viên struct trên bảng điều khiển cùng với một số văn bản khác.
- In giá trị của tuổi thành viên struct trên bảng điều khiển cùng với một số văn bản khác.
- Chương trình sẽ trả về một giá trị nếu nó chạy thành công.
- Kết thúc hàm main ().
Con trỏ đến cấu trúc
Có thể tạo một con trỏ trỏ đến một cấu trúc. Nó tương tự như cách con trỏ trỏ đến các kiểu dữ liệu gốc như int, float, double, v.v. được tạo. Lưu ý rằng một con trỏ trong C ++ sẽ lưu trữ một vị trí bộ nhớ.
Ví dụ 2:
#includeusing namespace std;struct Length{int meters;float centimeters;};int main(){Length *ptr, l;ptr = &l;cout << "Enter meters: ";cin >> (*ptr).meters;cout << "Enter centimeters: ";cin >> (*ptr).centimeters;cout << "Length = " << (*ptr).meters << " meters " << (*ptr).centimeters << " centimeters";return 0;}
Đầu ra:
Đây là ảnh chụp màn hình của mã:
Giải thích mã:
- Bao gồm tệp tiêu đề iostream trong chương trình của chúng tôi để sử dụng các chức năng của nó.
- Bao gồm không gian tên std trong chương trình của chúng tôi để sử dụng các lớp của nó mà không cần gọi nó.
- Tạo một cấu trúc có tên là Chiều dài.
- Bắt đầu phần nội dung của struct Length.
- Tạo một thành viên cấu trúc có tên là mét kiểu dữ liệu số nguyên.
- Tạo một thành viên cấu trúc có tên là centimet kiểu số nguyên.
- Cuối phần nội dung của struct Length.
- Gọi hàm main ().
- Bắt đầu phần thân của hàm main ().
- Tạo một biến con trỏ * ptr và biến bình thường l kiểu Length.
- Lưu trữ địa chỉ của biến l trong biến con trỏ của chúng ta.
- Hiển thị thông báo trên bảng điều khiển, yêu cầu người dùng nhập giá trị cho các đồng hồ biến thiên.
- Đọc giá trị do người dùng nhập qua bàn phím. Các đồng hồ đo hàm thành viên ở đây được truy cập bằng cách sử dụng biến con trỏ.
- Hiển thị thông báo trên bảng điều khiển, yêu cầu người dùng nhập giá trị cho các cm biến đổi.
- Đọc giá trị do người dùng nhập qua bàn phím. Hàm thành viên centimet được truy cập ở đây bằng cách sử dụng biến con trỏ.
- Hiển thị các giá trị được đọc từ người dùng trên bảng điều khiển cùng với một số văn bản khác.
- Chương trình phải trả về một giá trị khi thực hiện thành công.
- Cuối phần thân của hàm main ().
Cấu trúc dưới dạng đối số hàm
Bạn có thể truyền một cấu trúc cho một hàm như một đối số. Điều này được thực hiện theo cách tương tự như truyền một đối số bình thường. Các biến cấu trúc cũng có thể được chuyển cho một hàm. Một ví dụ điển hình là khi bạn cần hiển thị giá trị của các thành viên struct. Hãy chứng minh điều này:
Ví dụ 3:
#includeusing namespace std;struct Person{int citizenship;int age;};void func(struct Person p);int main(){struct Person p;p.citizenship = 1;p.age = 27;func(p);return 0;}void func(struct Person p){cout << " Person citizenship: " << p.citizenship< Đầu ra:
Đây là ảnh chụp màn hình của mã:
Giải thích mã:
- Bao gồm tệp tiêu đề iostream vào tệp của chúng tôi. Sau đó chúng tôi sẽ sử dụng các chức năng của nó mà không gặp lỗi.
- Bao gồm không gian tên std trong chương trình của chúng tôi để sử dụng các lớp của nó. Chúng ta sẽ không cần gọi không gian tên để sử dụng các lớp của nó.
- Tạo một cấu trúc có tên là Person.
- Bắt đầu phần thân của struct Person.
- Tạo một thành viên của struct Person. Thành viên được đặt tên là công dân và thuộc loại số nguyên.
- Tạo một thành viên của struct Person. Thành viên được đặt tên là age và thuộc kiểu số nguyên.
- Cuối phần thân của struct Person.
- Tạo một hàm lấy ví dụ của struct Person, p, làm đối số.
- Gọi hàm chính. Dấu {đánh dấu phần bắt đầu của phần thân của hàm main ().
- Tạo một thể hiện của struct Person và đặt tên cho nó là p.
- Truy cập quyền công dân của biến thành viên struct bằng cách sử dụng phiên bản của struct, p và gán giá trị 1 cho nó.
- Truy cập biến age thành viên struct bằng cách sử dụng phiên bản của struct, p và gán cho nó giá trị 27.
- Gọi hàm và chuyển cho nó thể hiện của struct Person, p, làm đối số.
- Hàm phải trả về một giá trị khi thực thi thành công.
- Cuối phần thân của hàm main ().
- Tạo phần thân của hàm.
- Phần bắt đầu của phần thân của hàm.
- Truy cập giá trị công dân của thành viên struct và in nó trên bảng điều khiển cùng với văn bản khác.
- Truy cập giá trị tuổi của thành viên struct và in nó trên bảng điều khiển cùng với văn bản khác.
- Phần cuối của cơ quan chức năng.
Giới hạn của cấu trúc C ++
Sau đây là những hạn chế của cấu trúc:
- Kiểu dữ liệu struct không thể được coi như kiểu dữ liệu tích hợp sẵn.
- Các toán tử như + - và các toán tử khác không thể được sử dụng trên các biến cấu trúc.
- Cấu trúc không hỗ trợ ẩn dữ liệu. Các thành viên của một cấu trúc có thể được truy cập bởi bất kỳ chức năng nào bất kể phạm vi của nó.
- Các thành viên tĩnh không thể được khai báo bên trong thân cấu trúc.
- Các trình xây dựng không thể được tạo bên trong một cấu trúc.
Tóm lược:
- Struct là một cấu trúc dữ liệu lưu trữ các phần tử dữ liệu thuộc các kiểu khác nhau.
- Trong khi một mảng lưu trữ các phần tử dữ liệu của một kiểu tương tự, một cấu trúc lưu trữ các phần tử dữ liệu thuộc các kiểu khác nhau.
- Một cấu trúc nên được sử dụng khi các phần tử dữ liệu không được mong đợi thay đổi giá trị.
- Các thành viên của một cấu trúc được truy cập bằng cách sử dụng toán tử dấu chấm (.).
- Chúng ta phải tạo một phiên bản của cấu trúc.
- Để tạo một cấu trúc C ++, chúng tôi sử dụng từ khóa struct.
- Các con trỏ trỏ đến một cấu trúc được tạo tương tự như cách tạo các con trỏ trỏ đến các kiểu thông thường.
- Một cấu trúc có thể được truyền như một đối số cho một hàm theo cách giống như cách truyền các hàm thông thường.