Lập trình căn bản - Phần 2 - Chương 9: Kiểu cấu trúc
Bạn đang xem tài liệu "Lập trình căn bản - Phần 2 - Chương 9: Kiểu cấu trúc", để tải tài liệu gốc về máy bạn click vào nút DOWNLOAD ở trên
Tài liệu đính kèm:
- lap_trinh_can_ban_phan_2_chuong_9_kieu_cau_truc.ppt
Nội dung text: Lập trình căn bản - Phần 2 - Chương 9: Kiểu cấu trúc
- LẬP TRÌNH CĂN BẢN Phần 2 - Chương 9 KIỂU CẤU TRÚC 1
- Nội dung chương này • Kiểu cấu trúc trong C • Các thao tác trên biến kiểu cấu trúc • Con trỏ và cấu trúc 2
- Kiểu cấu trúc trong C • Khái niệm • Định nghĩa kiểu cấu trúc • Khai báo biến cấu trúc 3
- Khái niệm • Kiểu cấu trúc (struct) là kiểu dữ liệu bao gồm nhiều thành phần có kiểu khác nhau, mỗi thành phần được gọi là một trường (field) • Nó khác với kiểu mảng (nơi mà các phần tử có cùng kiểu) • Ví dụ: 1 struct: 1 mảng: 4
- Định nghĩa kiểu cấu trúc + Khai báo biến cấu trúc (1) • Cách 1: struct { struct SinhVien{ ; char MSSV[10]; char HoTen[40]; ; struct NgayThang NgaySinh; int Phai; ; char DiaChi[40]; }; } [biến 1, biến 2]; Khaibáo biến: Ví dụ: struct NgayThang NgaySinh; struct NgayThang{ struct SinhVien SV; unsigned char Ngay; unsigned char Thang; unsigned int Nam; struct tên_biến; }; 5
- Định nghĩa kiểu cấu trúc + Khai báo biến cấu trúc (2) • Chú ý: – struct không tên: A và B là các struct có 2 thành phần x và y. struct này không có tên, nên ngoài A và B, ta không thể định nghĩa thêm các biến khác được. – Tuy nhiên A và B là các biến có kiểu struct point. Sau này ta có thể khai báo thêm các biến khác có kiểu struct point 6 này.
- Định nghĩa kiểu cấu trúc + Khai báo biến cấu trúc (3) • Cách 2: typedef struct { typedef struct{ ; char MSSV[10]; char HoTen[40]; ; NgayThang NgaySinh; int Phai; ; char DiaChi[40]; } SinhVien; } ; Khai báo biến: Ví dụ: typedef struct{ unsigned char Ngay; NgayThang NgaySinh; unsigned char Thang; SinhVien SV; unsigned int Nam; tên_biến; } NgayThang; 7
- Các thao tác trên biến kiểu cấu trúc • Truy xuất đến từng trường của biến cấu trúc • Khởi tạo cấu trúc 8
- Truy xuất đến từng trường (field) của biến cấu trúc (1) • Cú pháp: . • Ví dụ 1: Chương trình cho phép đọc dữ liệu từ bàn phím cho biến mẩu tin SinhVien và in biến mẩu tin đó lên màn hình: 9
- Truy xuất đến từng trường (field) của biến cấu trúc (2) 10
- Truy xuất đến từng trường (field) của biến cấu trúc (3) • Kết quả của 1 lần nhập: 11
- Truy xuất đến từng trường (field) của biến cấu trúc (4) • Lưu ý: – Các biến cấu trúc có thể gán cho nhau • Ví dụ: s=SV; // gán để lấy giá trị toàn bộ cấu trúc – Ta không thể thực hiện được các thao tác sau đây cho biến cấu trúc: • Sử dụng các hàm xuất nhập trên biến cấu trúc • Các phép toán quan hệ, các phép toán số học và logic 12
- Khởi tạo cấu trúc • Biến cấu trúc có thể được khởi tạo giá trị ban đầu lúc khai báo • Ví dụ: struct NgayThang NgaySinh ={29, 8, 1986}; 13
- Con trỏ và cấu trúc • Khai báo • Sử dụng các con trỏ kiểu cấu trúc • Truy cập các thành phần của cấu trúc đang được quản lý bởi con trỏ 14
- Khai báo (1) • Cú pháp: struct * ; • Ví dụ 1: struct NgayThang *p; hoặc NgayThang *p; // Nếu có dùng typedef 15
- Khai báo (2) • Ví dụ 2: – Truy cập đến các trường: – Nếu dùng con trỏ thì: 16
- Sử dụng các con trỏ kiểu cấu trúc • Có 2 cách: – Phải cấp phát bộ nhớ cho nó – Cho nó chỉ vào (chứa địa chỉ) biến đang tồn tại • Ví dụ: struct NgayThang *p; p=(struct NgayThang *)malloc(sizeof(struct NgayThang)); p->Ngay=29; p->Thang=8; p->Nam=1986; Hoặc struct NgayThang Ngay = {29,8,1986}; p = &Ngay; 17
- Truy cập các thành phần của cấu trúc đang được quản lý bởi con trỏ (1) • Với khai báo sau: struct NgayThang *p; • Ta có thể truy cập đến các trường của nó như sau: p->Ngay p->Thang hoặc (*p).Ngay (*p).Thang 18
- Truy cập các thành phần của cấu trúc đang được quản lý bởi con trỏ (3) • Ví dụ 19
- Hết chương 20