Tải bản đầy đủ (.pdf) (5 trang)

LẬP TRÌNH CĂN BẢN - KIỂU CẤU TRÚC pps

Bạn đang xem bản rút gọn của tài liệu. Xem và tải ngay bản đầy đủ của tài liệu tại đây (206.25 KB, 5 trang )

1
LẬP TRÌNH CĂN BẢN
KIỂU CẤU TRÚC
2
Nộidung chươngnày
l Kiểu cấu trúc trong C
l Các thao tác trên biến kiểu cấu trúc
l Con trỏ vàcấu trúc
3
Kiểu cấu trúc trong C
l Khái niệm
l Định nghĩa kiểu cấu trúc
l Khai báo biến cấu trúc
4
Khái niệm
l 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)
l Nókhác với kiểu mảng (nơi màcác phần tử cócùng kiểu)
l Ví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)
l Cách 1:
struct SinhVien{
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)
l Chúý:
l struct không tên:
l Tuy 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)
l Cá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
l Truy xuất đến từng trường của biến cấu trúc
l Khở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)
l Cúpháp: <Biến cấu trúc>.<Tên trường>
l 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:
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)
l Kế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)
l Lưu ý:
l Các biến cấu trúc cóthể gán cho nhau
l Vídụ:
s=SV; // gán để lấy giátrị toàn bộ cấu trúc
l Ta không thể thực hiện được các thao tác sau đây cho biến
cấu trúc:
l Sử dụng các hàm xuất nhập trên biến cấu trúc
l Cá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
l Biến cấu trúc cóthể được khởi tạo giátrị ban
đầu lúc khai báo
l Vídụ:
struct NgayThang NgaySinh ={29, 8, 1986};
14
Con trỏ vàcấu trúc
l Khai báo
l Sử dụng các con trỏ kiểu cấu trúc
l Truy 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)
l Cúpháp:
struct <Tên cấu trúc> * <Tên biến con trỏ>;
l Vídụ1:
struct NgayThang *p;
hoặc
NgayThang *p; // Nếu códùng typedef
16
Khai báo (2)
l Vídụ2:
l Truy cập đến các trường:
l Nếu dùng con trỏ thì:
17
Sử dụng các con trỏ kiểu cấu trúc
l Có2 cách:
l Phải cấp phát bộ nhớ cho nó
l Cho nóchỉ vào (chứa địa chỉ) biến đang tồn tại

l 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;
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)
l Với khai báo sau:
struct NgayThang *p;
l 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
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)
l Vídụ
20
Hết chương

×