1
LP TRÌNH CĂN BN
KIU CU TRÚC
2
Nidung chươngnày
lKiu cu trúc trong C
lCác thao tác trên biến kiu cu trúc
lCon trvàcu trúc
3
Kiu cu trúc trong C
lKi nim
lĐịnh nghĩa kiu cu trúc
lKhai báo biến cu trúc
4
Khái nim
lKiu cu trúc (struct) làkiu dliu bao gm nhiu thành
phn cókiu khác nhau, mi thành phn được gi làmt
trường (field)
lNókhác vi kiu mng (nơi màcác phn tcócùng kiu)
lVíd:
1 struct:
1 mng:
5
Định nghĩa kiu cu tc +
Khai báo biến cu trúc (1)
lCách 1:
structSinhVien{
char MSSV[10];
char HoTen[40];
struct NgayThang NgaySinh;
int Phai;
char DiaChi[40];
};
Khaibáo biến:
struct NgayThang NgaySinh;
struct SinhVien SV;
struct <Tên cu trúc> {
<Kiu> <Trường 1>;
<Kiu> <Trường 2>;
..
<Kiu> <Trường n>;
}[biến 1, biến 2];
Víd:
struct NgayThang{
unsigned char Ngay;
unsigned char Thang;
unsigned int Nam;
};
struct <Tên cu trúc> tên_biến;
6
Định nghĩa kiu cu tc +
Khai báo biến cu trúc (2)
lChúý:
lstruct không tên:
lTuy nhiên
A vàB làcác struct có2 thành
phn 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
tm các biến khác được.
A vàB làcác biến cókiu
struct point.
Sau này ta cóthkhai báo thêm
các biến kc cókiu struct point
này.
7
Định nghĩa kiu cu tc +
Khai báo biến cu trúc (3)
lCách 2:
typedef struct{
char MSSV[10];
char HoTen[40];
NgayThang NgaySinh;
int Phai;
char DiaChi[40];
}SinhVien;
Khai báo biến:
NgayThang NgaySinh;
SinhVien SV;
typedef struct {
<Kiu> <Trường 1> ;
<Kiu> <Trường 2> ;
..
<Kiu> <Trường n> ;
}<Tên cu trúc>;
Víd:
typedef struct{
unsigned char Ngay;
unsigned char Thang;
unsigned int Nam;
}NgayThang; <Tên cu trúc> tên_biến;
8
c thao tác trên biến kiu cu
trúc
lTruy xut đến tng trường ca biến cu trúc
lKhi to cu trúc
9
Truy xut đến tng trường (field)
ca biến cu trúc (1)
lCúpháp: <Biến cu trúc>.<Tên trường>
lVíd1: Chương trình cho phép đọc dliu tbàn phím cho
biến mu tin SinhVien vàin biến mu tin đólên màn hình:
10
Truy xut đến tng trường (field)
ca biến cu trúc (2)
11
Truy xut đến tng trường (field)
ca biến cu trúc (3)
lKết quca 1 ln nhp:
12
Truy xut đến tng trường (field)
ca biến cu trúc (4)
lLưu ý:
lCác biến cu trúc cóthgán cho nhau
lVíd:
s=SV; // gán để ly giátrtoàn bcu trúc
lTa không ththc hin được các thao tác sau đây cho biến
cu trúc:
lSdng các hàm xut nhp trên biến cu trúc
lCác phép toán quan h, các phép toán shc vàlogic
13
Khi to cu trúc
lBiến cu trúc cóth được khi to giátr ban
đầu lúc khai báo
lVíd:
struct NgayThang NgaySinh ={29, 8, 1986};
14
Con trvàcu trúc
lKhai báo
lSdng các con trkiu cu trúc
lTruy cp c thành phn ca cu trúc đang được
qun lý bi con tr
15
Khai báo (1)
lCúpháp:
struct <Tên cu trúc> * <Tên biến con tr>;
lVíd1:
struct NgayThang *p;
hoc
NgayThang *p; // Nếu cóng typedef
16
Khai báo (2)
lVíd2:
lTruy cp đếnc trường:
lNếu dùng con trthì:
17
Sdng các con trkiu cu trúc
lCó2 cách:
lPhi cp phát bnhcho
lCho nóchvào (cha địa ch) biến đang tn ti
lVíd:
struct NgayThang *p;
p=(struct NgayThang *)malloc(sizeof(struct NgayThang));
p->Ngay=29; p->Thang=8; p->Nam=1986;
Hoc
struct NgayThang Ngay = {29,8,1986};
p = &Ngay;
18
Truy cp các thành phn ca cu trúc
đang được qun lý bi con tr(1)
lVi khai báo sau:
struct NgayThang *p;
lTa cóthtruy cp đến các trưng ca nó như sau:
p->Ngay p->Thang
hoc
(p*).Ngay (p*).Thang
19
Truy cp các thành phn ca cu trúc
đang được qun lý bi con tr(3)
lVíd
20
Hết chương