Tài liệu này dành cho sinh viên, giáo viên khối ngành công nghệ thông tin tham khảo và có những bài học bổ ích hơn, bổ trợ cho việc tìm kiếm tài liệu, giáo án, giáo trình, bài giảng các môn học khối ngành công nghệ thông tin
Trang 1NGÔN NGỮ LẬP TRÌNH C/C+
+
(Bài giảng tuần 8)
Trang 2Tin học cơ sỏ II 2
Nội dung
Kiểu dữ liệu có cấu trúc
Cấu trúc
Hợp
Trường
Kiểu liệt kê
Trang 3Kiểu cấu trúc
Trang 4Tin học cơ sỏ II 4
Khai báo và khởi tạo cấu trúc
struct <tên kiểu>
{
các thành phần;
} [<danh sách biến>];
Mỗi thành phần (một trường) là một
khai báo biến
Phần <danh sách biến> có thể có hoặc
không
Trang 5Khai báo biến cấu trúc
// Khai báo trong C
struct <tên cấu trúc> <danh sách biến>;
// Khai báo trong C++
<tên cấu trúc> <danh sách biến>;
Ví dụ:
struct vector { double x, y, z;
};
struct vector v1, *v2; // Khai báo vector trong C
vector v3, *v4; // Khai báo vector trong C++
Trang 6Tin học cơ sỏ II 6
Truy cập các thành phần cấu trúc
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
Nếu pvar là một biến con trỏ 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à pvar->m
Ví dụ:
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
Trang 7Phép gán và khởi tạo cấu trúc
Khác với biến mảng, ta có thể gán hai biến
cấu trúc cùng kiểu
Ví dụ:
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
Trang 8Hàm và cấu trúc
Trang 9Con trỏ và địa chỉ cấu trúc
Khai báo con trỏ đến cấu trúc:
struct <tên cấu trúc> *p;
Truy cập đến các thành phần:
p-><tên thành phần>, hoặc
*p.<tên thành phần>
Địa chỉ các thành phần:
&(p-><tên thành phần>)
Trang 10Tin học cơ sỏ II 10
Đối của hàm là cấu trúc
Một cấu trúc có thể được sử dụng để làm
đối của hàm dưới các dạng sau đây:
Là một biến cấu trúc, khi đó tham đối thực sự là một cấu trúc.
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
Là một tham chiếu cấu trúc, tham đối thực sự
là một cấu trúc.
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.
Trang 11Giá trị của hàm là cấu trúc
Cũng tương tự như các kiểu dữ liệu cơ
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:
là một biến cấu trúc.
là một con trỏ cấu trúc
là một tham chiếu cấu trúc.
Trang 12Cấu trúc với thành phần kiểu
bit (trường)
Trang 13Khái niệm
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ữ
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
Trang 14Tin học cơ sỏ II 14
Khai báo trường
struct <tên cấu trúc> {
int <tên trường>:<số bit>;
<tên kiểu> <tên trường>’
}
Chú ý: Tên trường bit phải có kiểu int
hoặc unsigned int
Trang 15Khai báo kiểu mới
typedef <tên kiểu> <tên kiểu mới>;
Ví dụ:
typedef struct vector vector_t;
typedef struct {
int ngay, thang, nam;
} Date;
Trang 16Kiểu hợp (Union)
Trang 17Khai báo
union <tên kiểu> {
Danh sách các thành phần;
};
Cách truy cập đến các thành phần: Giống
như kiểu cấu trúc
Trang 18Kiểu liệt kê
Trang 19Có 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:
enum tên_kiểu { d/s tên các giá trị };
Ví dụ:
enum Bool {false, true};
Khai báo
Trang 20Tin học cơ sỏ II 20
Sử dụng kiểu liệt kê
Biến tham chiếu
int i;
int &j=i; // j là một cách tham chiếu khác
// của biến i
j = 5; // Sau lệnh gán này i cũng có giá trị 5
Biến tham chiếu phải được khởi tạo khi khai báo