LẬP TRÌNH CĂN BẢN
Phần 2 - Chương 9 KIỂU CẤU TRÚC N.C. Danh
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 , m i thành ph n đ
ể ữ ệ ỗ ộ ề ồ g m nhi u thành ầ ượ ọ c g i là m t
ể ấ ầ ườ ể ph n có ki u khác nhau tr ng (field)
ầ ử ể ớ ơ ể có cùng ki u)
ả Nó khác v i ki u m ng (n i mà các ph n t Ví d :ụ
1 struct:
4
1 mảng:
Định nghĩa kiểu cấu trúc + Khai báo biến cấu trúc (1)
Cách 1:
struct SinhVien{
struct
{ ườ ườ
ng 1>; ng 2>;
NgayThang
char MSSV[10]; char HoTen[40]; struct
NgaySinh;
ng n>;
int Phai; char DiaChi[40];
ườ ế
ấ
ế ấ struct 5 Ví dụ:
struct NgayThang{
unsigned char Ngay;
unsigned char Thang;
unsigned int Nam;
}; 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. 6 Sau này ta có thể khai báo thêm
các biến khác có kiểu struct point
này. Cách 2: ườ
ườ ng 1>
ng 2> ;
; ng n> ; } SinhVien; typedef struct {
(cid:0) Khai báo biến: ế ấ 7 Ví dụ:
typedef struct{
unsigned char Ngay;
unsigned char Thang;
unsigned int Nam;
} NgayThang; ườ ế ấ ủ ng c a bi n c u trúc ấ ế ừ
Truy xu t đ n t ng tr
ở ạ ấ
Kh i t o c u trúc 8 Cú pháp: ế ấ ườ ng> Ví d 1: ụ Ch ươ ọ ữ ệ ừ bàn phím cho 9 ế ẩ ng trình cho phép đ c d li u t
ế ẩ bi n m u tin SinhVien và in bi n m u tin đó lên màn hình: 10 Kết quả của 1 lần nhập: 11 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 12 ế ấ
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 Biến cấu trúc có thể được khởi tạo giá trị ban đầu lúc khai báo Ví dụ: 13 struct NgayThang NgaySinh ={29, 8, 1986}; ỏ ể ấ ầ ủ ấ ậ ượ 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 Cú pháp: Ví d 1: ụ ế ấ ỏ struct struct NgayThang *p; ho cặ 15 ế NgayThang *p; // N u có dùng typedef Ví dụ 2: Truy cập đến các trường: Nếu dùng con trỏ thì: 16 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ụ: 17 V i khai báo sau: ớ Ta có th truy c p đ n các tr p>Ngay p>Thang ho cặ (*p).Ngay (*p).Thang 18 ể ế ậ ườ ủ ư ng c a nó nh sau: Ví dụ 19 Hết chương 20ể ể
};
(cid:0) Khaibáo biến:
struct NgayThang NgaySinh;
struct SinhVien SV;
Định nghĩa kiểu cấu trúc +
Khai báo biến cấu trúc (2)
Định nghĩa kiểu cấu trúc +
Khai báo biến cấu trúc (3)
typedef struct{
char MSSV[10];
char HoTen[40];
NgayThang NgaySinh;
int Phai;
char DiaChi[40];
ể ể ;
NgayThang NgaySinh;
SinhVien SV;
ể ấ
ế
Các thao tác trên bi n ki u c u
trúc
ấ ế ừ
ườ
ng (field)
ế ấ
Truy xu t đ n t ng tr
ủ
c a bi n c u trúc (1)
ấ ế ừ
ườ
ng (field)
ế ấ
Truy xu t đ n t ng tr
ủ
c a bi n c u trúc (2)
ấ ế ừ
ườ
ng (field)
ế ấ
Truy xu t đ n t ng tr
ủ
c a bi n c u trúc (3)
ấ ế ừ
ườ
ng (field)
ế ấ
Truy xu t đ n t ng tr
ủ
c a bi n c u trúc (4)
ở ạ ấ
Kh i t o c u trúc
ỏ
ấ
Con tr và c u trúc
Khai báo (1)
Khai báo (2)
ỏ ể ấ
ử ụ
S d ng các con tr ki u c u trúc
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;
ầ ủ ấ
ậ
ượ
ả
ỏ
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)
struct NgayThang *p;
ầ ủ ấ
ậ
ượ
ả
ỏ
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)
Tài liệu liên quan
Tài liêu mới

