Struct là một kiểu dữ liệu bao gồm nhiều thành phần có thể thuộc nhiều kiểu dữ liệu khác nhau. Các thành phần được truy nhập thông qua một tên.Bạn đang xem: Struct là gì

Khái niệm cấu trúc

Một cấu trúc bao gồm các mẫu dữ liệu (không nhất thiết cùng kiểu) được nhóm lại với nhau.

Bạn đang xem: Struct là gì


*

Việc định nghĩa cấu trúc sẽ tạo ra kiểu dữ liệu mới cho phép người dùng sử dụng chúng để khai báo các biến kiểu cấu trúc.

Các biến trong cấu trúc được gọi là các phần tử của cấu trúc hay thành phần của cấu trúc

– Khi một cấu trúc đã được định nghĩa, chúng ta có thể khai báo một hoặc nhiều biến sử dụng kiểu này.– Ví dụ: struct cat books1;– Câu lệnh này sẽ dành đủ vùng nhớ để lưu trữ tất cả các mục trong một cấu trúc.
*

Khởi tạo cấu trúc

Giống như các biến khác và mảng, các biến kiểu cấu trúc có thể được khởi tạo tại thời điểm khai báoCác biến emp1 và emp2 có kiểu employee có thể được khai báo và khởi tạo như sau:

struct employee emp1 = {346, “Abraham”};struct employee emp2 = {347, “John”};

Truy cập phần tử của cấu trúc

Các phần tử của cấu trúc được truy cập thông qua việc sử dụng toán tử chấm (.), toán tử này còn được gọi là toán tử thành viên – membership. Cú pháp:

structure_name.element_name

 Ví dụ:

scanf(“%s”, books1.bk_name);

Gán sử dụng cấu trúc

Có thể sử dụng câu lệnh gán đơn giản để gán giá trị của một biến cấu trúc cho một biến khác có cùng kiểu Chẳng hạn, nếu books1 và books2 là các biến cấu trúc có cùng kiểu, thì câu lệnh sau là hợp lệ

books2 = books1;

Sao chép cấu trúc

Do kiểu dữ liệu cấu trúc là phức tạp nên trong một số trường hợp không thể dùng câu lệnh gán trực tiếp, thì có thể sử dụng hàm memcpy(), đây là hàm có sẵn trong thư viện lập trìnhCú pháp:

memcpy (char * destn, char &source, int nbytes);

Ví dụ:

memcpy (&books2, &books1, sizeof(struct cat));

Cấu trúc lồng nhau

Một cấu trúc có thể lồng trong một cấu trúc khác. Tuy nhiên, một cấu trúc không thể lồng trong chính nó.

struct issue

{

char borrower ;char dt_of_issue;struct cat books;

}issl;

Việc truy cập vào các phần tử của cấu trúc này tương tự như với cấu trúc bình thường khác,issl.borrowerĐể truy cập vào phần tử của cấu trúc cat là một phần của cấu trúc isslissl.books.author

Mảng cấu trúc

Một kiểu cấu trúc phải được định nghĩa trước, sau đó một biến mảng có kiểu cấu trúc tương ứng mới được khai báoVí dụ: struct cat books;Để truy cập vào thành phần author của phần tử thứ tư của mảng books ta làm như sau:

books.author

Khởi tạo các mảng cấu trúc

Mảng cấu trúc được khởi tạo bằng cách liệt kê danh sách các giá trị phần tử của nó dưới dạng liệt kê Ví dụ:struct unit{char ch;int i;
*

*

*

#include #include Bước 3: Khai báo struct HinhChuNhat cho chương trình.

struct HinhChuNhat {int Dai;int Rong;};Bước 4: Viết các khai báo nguyên mẫu hàm cho chương trình như sau:

void NhapThongTinHCN(HinhChuNhat &pHcn);void XuatThongTinHCN(HinhChuNhat pHcn);void TinhChuViHcn(HinhChuNhat pHcn);void TinhDienTichHcn(HinhChuNhat pHcn); Bước 5: Viết hàm main để thực thi chương trình.

void main(){HinhChuNhat hinhchunhat;NhapThongTinHCN(hinhchunhat);XuatThongTinHCN(hinhchunhat);TinhChuViHcn(hinhchunhat);TinhDienTichHcn(hinhchunhat);getch(); }Bước 6: Viết các định nghĩa hàm cần thiết cho chương trình như sau:

void NhapThongTinHCN(HinhChuNhat &pHcn){printf("Moi ban nhap chieu dai hcn=");scanf_s("%d",&pHcn.Dai);printf("Moi ban nhap chieu rong hcn=");scanf_s("%d",&pHcn.Rong);} //================================void XuatThongTinHCN(HinhChuNhat pHcn){printf("Chieu dai hcn la=%d",pHcn.Dai);printf("\nChieu rong hcn la=%d",pHcn.Rong);}//===============================void TinhChuViHcn(HinhChuNhat pHcn){printf("\nChu vi hcn la=%d",(pHcn.Dai+pHcn.Rong)*2);}//================================void TinhDienTichHcn(HinhChuNhat pHcn){printf("\nDien tich hcn la=%d",pHcn.Dai*pHcn.Rong);}Bài tập tương tự1. Khai báo cấu trúc PhanSo cần thiết lưu trữ thông tin phân số, sau đó thực hiện các chức năng:

Viết hàm nhập vào phân số.Viết hàm xuất phân số.Kiểm tra phân số mẫu phải khác 0.Viết hàm tối giản phân số.Viết hàm quy đồng 2 phân số.Nhập vào 2 phân số. Tính tổng, hiệu, tích và thương của hai phân số.

2. Khai báo cấu trúc NhanVien lưu trữ thông tin:

Mã số nhân viênTên nhân viênSố ngày côngLương 1 ngày côngChức vụ

Sau đó thực hiện các chức năng:

Nhập thông tin cho 1 nhân viên.Tính lương cho 1 nhân viên theo công thức : Luong= Số ngày công * Lương 1 ngày công.Tính tiền thưởng cho nhân viên, biết rằng thưởng 50$ cho nhân viên làm trên 24 ngày.

Xem thêm: Khách Hàng Tiềm Năng Tiếng Anh Là Gì, Và Các Vấn Đề Xung Quanh

Tính tiền phụ cấp chức vụ:

Giám đốc: 100$Phó giám đốc: 80$Trưởng phòng: 40$Phó phòng: 20$Tính tiền lương thực lãnh cho nhân viên bằng lương + thưởng + phụ cấp chức vụ.

3. Hãy khai báo một cấu trúc mô tả một điểm trên tọa độ xOy. Sau đó viết hàm thực hiện các chức năng sau:

Nhập, xuất điểm.Kiểm tra điểm có nằm trên trục tung/trục hoành.Tính khoảng cách giữa 2 điểm.Tìm điểm đối xứng của 1 điểm qua trục tung/trục hoành

4. Cho thông tin điểm các môn học sau: NNLT, Tin học, Toán A1. Hãy khai báo một cấu trúc mô tả điểm các môn học của 1 sinh viên. Sau đó viết hàm thực hiện các chức năng sau:

Nhập, xuất thông tin điểm của 1 sinh viên.Tính điểm trung bình 3 môn.Xếp loại cho sinh viên đó theo điều kiện:Xuất sắc: ĐTB>=9Giỏi với: 8.0Khá với: 6.5Trung bình: 5.0Yếu: ĐTBMảng Struct và ví dụ ứng dụng