
1
LẬP TRÌNH CĂN BẢN
KIỂU CẤU TRÚC
2
Nộidung chươngnày
lKiểu cấu trúc trong C
lCác thao tác trên biến kiểu cấu trúc
lCon trỏvàcấu trúc
3
Kiểu cấu trúc trong C
lKhái niệm
lĐịnh nghĩa kiểu cấu trúc
lKhai báo biến cấu trúc
4
Khái niệm
lKiể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)
lNókhác với kiểu mảng (nơi màcác phần tửcócùng kiểu)
lVídụ:
1 struct:
1 mảng:

5
Định nghĩa kiểu cấu trúc +
Khai báo biến cấu 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 cấu trúc> {
<Kiểu> <Trường 1>;
<Kiểu> <Trường 2>;
……..
<Kiểu> <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 cấu trúc> tên_biến;
6
Định nghĩa kiểu cấu trúc +
Khai báo biến cấu trúc (2)
lChúý:
lstruct không tên:
lTuy nhiê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.
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
này.
7
Định nghĩa kiểu cấu trúc +
Khai báo biến cấu 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 {
<Kiểu> <Trường 1> ;
<Kiểu> <Trường 2> ;
……..
<Kiểu> <Trường n> ;
}<Tên cấu trúc>;
Vídụ:
typedef struct{
unsigned char Ngay;
unsigned char Thang;
unsigned int Nam;
}NgayThang; <Tên cấu trúc> tên_biến;
8
Các thao tác trên biến kiểu cấu
trúc
lTruy xuất đến từng trường của biến cấu trúc
lKhởi tạo cấu trúc

9
Truy xuất đến từng trường (field)
của biến cấu trúc (1)
lCúpháp: <Biến cấu trúc>.<Tên trường>
lVí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:
10
Truy xuất đến từng trường (field)
của biến cấu trúc (2)
11
Truy xuất đến từng trường (field)
của biến cấu trúc (3)
lKết quảcủa 1 lần nhập:
12
Truy xuất đến từng trường (field)
của biến cấu trúc (4)
lLưu ý:
lCác biến cấu trúc cóthểgán cho nhau
lVídụ:
s=SV; // gán để lấy giátrịtoàn bộcấu trúc
lTa không thểthực hiện được các thao tác sau đây cho biến
cấu trúc:
lSửdụng các hàm xuất nhập trên biến cấu trúc
lCác phép toán quan hệ, các phép toán sốhọc vàlogic

13
Khởi tạo cấu trúc
lBiến cấu trúc cóthể được khởi tạo giátrị ban
đầu lúc khai báo
lVídụ:
struct NgayThang NgaySinh ={29, 8, 1986};
14
Con trỏvàcấu trúc
lKhai báo
lSửdụng các con trỏkiểu cấu trúc
lTruy cập các thành phần của cấu trúc đang được
quản lý bởi con trỏ
15
Khai báo (1)
lCúpháp:
struct <Tên cấu trúc> * <Tên biến con trỏ>;
lVídụ1:
struct NgayThang *p;
hoặc
NgayThang *p; // Nếu códùng typedef
16
Khai báo (2)
lVídụ2:
lTruy cập đến các trường:
lNếu dùng con trỏthì:

17
Sửdụng các con trỏkiểu cấu trúc
lCó2 cách:
lPhải cấp phát bộnhớcho nó
lCho nóchỉvào (chứa địa chỉ) biến đang tồn tại
lVí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;
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ỏ(1)
lVới khai báo sau:
struct NgayThang *p;
lTa 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
19
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)
lVídụ
20
Hết chương

