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
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->
(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
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
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