Chương 2: CẤU TRÚC

1. Khai báo và định nghĩa cấu trúc

2. Khai báo kiểu dữ liệu bằng typedef 3. Một số thao tác trên cấu trúc

a. Định nghĩa cấu trúc b. Khai báo cấu trúc  Khai báo cấu trúc  Khai báo biến cấu trúc  Khai báo mảng cấu trúc  Khai báo con trỏ cấu trúc

a. Truy cập tới thành phần của cấu trúc b. Phép gán giữa các cấu trúc c. Truyền biến cấu trúc cho hàm

1. Khai báo và định nghĩa cấu trúc

a. Định nghĩa cấu trúc

Trong lập trình có thể chúng ta phải tổ chức dữ liệu mà ngôn ngữ LTC không có sẵn. Ví dụ: Dữ liệu về ngày tháng gồm ngày, tháng, năm. Dữ liệu về sinh viên gồm mã số, họ tên, ngày tháng năm sinh, điểm…

• Để tổ chức được những loại dữ liệu như trên người

ta dùng cấu trúc

• Cấu trúc là kiểu dữ liệu bao gồm nhiều kiểu dữ liệu thành phần và mỗi kiểu dữ liệu thành phần là kiểu dữ liệu đơn hoặc dữ liệu có cấu trúc khác.

1. Khai báo và định nghĩa cấu trúc

b. Khai báo cấu trúc •

struct sinhvien

Cấu trúc được khai báo theo cú pháp sau:

{

struct

char ms[10];

{

char hoten[20];

biến thành phần 1;

int ns;

biến thành phần 2;

float dtb;

};

…;

};

1. Khai báo và định nghĩa cấu trúc

b. Khai báo cấu trúc Khai báo biến cấu trúc •

struct sinhvien

{

char ms[10];

struct

char hoten[20];

{

int ns;

biến thành phần 1;

float dtb;

} sv1, sv2;

biến thành phần 2;

} biencautruc;

struct sinhvien sv1, sv2

• Hoặc: struct biencautruc

1. Khai báo và định nghĩa cấu trúc

b. Khai báo cấu trúc Khai báo mảng cấu trúc •

struct sinhvien

{

char ms[10];

struct

char hoten[20];

{

int ns;

biến thành phần 1;

float dtb;

} dslop[10];

biến thành phần 2;

} mangcautruc[size];

struct sinhvien dslop[20]

• Hoặc: struct mangcautruc[size]

1. Khai báo và định nghĩa cấu trúc

b. Khai báo cấu trúc •

struct sinhvien

{

Khai báo con trỏ cấu trúc

char ms[10];

struct

char hoten[20];

{

int ns;

biến thành phần 1;

float dtb;

} *ctsv1, *ctct2;

biến thành phần 2;

} *controct;

struct sinhvien *ctsv1;

• Hoặc: struct *biencontro

2. Khai báo kiểu dữ liệu bằng typedef

• Ngôn ngữ c cho phép định nghĩa kiểu dữ liệu

mới bằng từ khóa typedef – typedef ; – Ví dụ: khi khai báo typedef int songuyen;

• Đối với cấu trúc, việc khai báo rất dài do vậy ta thường khai báo một cấu trúc bằng từ khóa typedef – Ví dụ: typedef struct sinhvien

{

các kiểu dữ liệu thành phần

}; Khi đó ta khai báo: sinhvien sv1, sv2;

Khi đó ta có thể khai bao songuyen s1, s2;

3.Một số thao tác trên cấu trúc

a. Truy cập tới thành phần của cấu trúc Cú pháp

Cho biến cấu trúc .

Ví dụ: sv1.ms

Cho mảng cấu trúc [i].

Ví dụ: dslop[i].ms

Cho con trỏ cấu trúc -> hoặc <*contro>.;

Ví dụ: ctsv1->ms hoặc (*ctsv1).ms

3.Một số thao tác trên cấu trúc

b. Phép gán giữa các cấu trúc

Phép gán được thực hiện giữa những biến cùng cấu trúc

c. Truyền biến cấu trúc cho hàm

Việc truyền biến cấu trúc, bao gồm tham biến và tham trị. – Tham trị – Tham biến