Nội dung

(cid:122) Kiểu dữ liệu có cấu trúc

NGÔN NGỮ LẬP TRÌNH C/C++

(cid:123)Cấu trúc (cid:123)Hợp (cid:123)Trường (cid:122) Kiểu liệt kê

1

2

Nguyễn Hải Châu Khoa Công nghệ thông tin Trường Đại học Công nghệ (Bài giảng tuần 8)

Khai báo và khởi tạo cấu trúc

Kiểu cấu trúc

3

4

struct { các thành phần; } []; (cid:122) Mỗi thành phần (một trường) là một khai báo biến (cid:122) Phần có thể có hoặc không

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

Truy cập các thành phần cấu trúc

(cid:122) Nếu var là một biến cấu trúc và m là thành phần của cấu trúc thì cách truy cập đến thành phần là var.m (cid:122) Nếu pvar là một biến con trỏ cấu trúc và

// Khai báo trong C struct ; // Khai báo trong C++ ; Ví dụ:

struct vector {

m là thành phần của cấu trúc thì cách truy cập đến thành phần là pvar->m

double x, y, z;

(cid:123)Thành phần x, y, z của các vector trong ví dụ trên: v1.x, v1.y, v1.z; v2->x, v2->y, v2->z

(cid:122) Ví dụ:

}; struct vector v1, *v2; // Khai báo vector trong C vector v3, *v4; // Khai báo vector trong C++

5

6

1

Phép gán và khởi tạo cấu trúc

(cid:122) Khác với biến mảng, ta có thể gán hai biến cấu trúc cùng kiểu.

Hàm và cấu trúc

struct vector v1, v2, v3 = {1, 1, 1}; v1.x = 0; v1.y = 0; v1.z = 0; v2 = v1; // Gán cấu trúc

7

8

(cid:122) Ví dụ:

Con trỏ và địa chỉ cấu trúc

Đối của hàm là cấu trúc

(cid:122) Một cấu trúc có thể được sử dụng để làm

một cấu trúc.

(cid:123)Là một con trỏ cấu trúc, tham đối thực sự là địa

chỉ của một cấu trúc.

(cid:123)Là một tham chiếu cấu trúc, tham đối thực sự là

một cấu trúc.

(cid:123)p->, hoặc (cid:123)*p. (cid:122) Địa chỉ các thành phần: (cid:123)&(p->)

(cid:123)Là một mảng cấu trúc hình thức hoặc con trỏ mảng, tham đối thực sự là tên mảng cấu trúc.

9

10

đối của hàm dưới các dạng sau đây: (cid:123)Là một biến cấu trúc, khi đó tham đối thực sự là (cid:122) Khai báo con trỏ đến cấu trúc: (cid:122) struct *p; (cid:122) Truy cập đến các thành phần:

Giá trị của hàm là cấu trúc

(cid:122) Cũng tương tự như các kiểu dữ liệu cơ

Cấu trúc với thành phần kiểu bit (trường)

11

12

bản, giá trị trả lại của một hàm cũng có thể là các cấu trúc dưới các dạng sau: (cid:123)là một biến cấu trúc. (cid:123)là một con trỏ cấu trúc. (cid:123)là một tham chiếu cấu trúc.

2

Khái niệm

Khai báo trường

struct {

int :; .... ’ ...

(cid:122) Thông thường các biến trong C, C++ sử dụng một số nguyên các byte để lưu trữ (cid:122) Trong các trường hợp cần thao tác với các bit, ta sử dụng khai báo trường

13

14

} (cid:122) Chú ý: Tên trường bit phải có kiểu int hoặc unsigned int

Khai báo kiểu mới

(cid:122) typedef ; (cid:122) Ví dụ:

Kiểu hợp (Union)

typedef struct vector vector_t; typedef struct {

int ngay, thang, nam;

} Date;

15

16

Khai báo

union {

Danh sách các thành phần;

Kiểu liệt kê

17

18

}; (cid:122) Cách truy cập đến các thành phần: Giống như kiểu cấu trúc

3

Khai báo

Sử dụng kiểu liệt kê

i; (cid:122) Có thể gán các giá trị nguyên liên tiếp (tính từ 0) cho các tên gọi cụ thể bằng kiểu liệt kê theo khai báo sau đây: Biến tham chiếu int int &j=i; // j là một cách tham chiếu khác

(cid:123)enum Bool {false, true};

(cid:122) enum tên_kiểu { d/s tên các giá trị }; (cid:122) Ví dụ: // của biến i // Sau lệnh gán này i cũng có giá trị 5 j = 5;

19

20

Biến tham chiếu phải được khởi tạo khi khai báo

4