1
1
NGÔN NGLP TRÌNH
C/C++
Nguyn Hi Châu
Khoa Công ngh thông tin
Trường Đại hc Công ngh
(Bài ging tun 8)
2
Ni dung
zKiu dliu có cu trúc
{Cu trúc
{Hp
{Trường
zKiu lit kê
3
Kiu cu trúc
4
Khai báo và khi to cu trúc
struct <tên kiu>
{
các thành phn;
} [<danh sách biến>];
zMi thành phn (mt trường) là mt
khai báo biến
zPhn <danh sách biến> có th hoc
không
5
Khai báo biến cu trúc
// Khai báo trong C
struct <tên cu trúc> <danh sách biến>;
// Khai báo trong C++
<tên cu trúc> <danh sách biến>;
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++
6
Truy cp các thành phn cu trúc
zNếu var mt biến cu trúc và m thành
phn ca cu trúc thì cách truy cp đến
thành phn là var.m
zNếu pvar mt biến con trcu trúc và
m thành phn ca cu trúc thì cách truy
cp đến thành phn là pvar->m
z d:
{Thành phn x, y, z ca các vector trong ví d
trên: v1.x, v1.y, v1.z; v2->x, v2->y, v2->z
2
7
Phép gán và khi to cu trúc
zKhác vi biến mng, ta có thgán hai
biến cu trúc cùng kiu.
z d:
struct vector v1, v2, v3 = {1, 1, 1};
v1.x = 0; v1.y = 0; v1.z = 0;
v2 = v1; // Gán cu trúc
8
Hàm và cu trúc
9
Con trđịa chcu trúc
zKhai báo con tr đến cu trúc:
zstruct <tên cu trúc> *p;
zTruy cp đến các thành phn:
{p-><tên thành phn>, hoc
{*p.<tên thành phn>
zĐịa chcác thành phn:
{&(p-><tên thành phn>)
10
Đối ca hàm là cu trúc
zMt cu trúc có th được sdng để làm
đối ca hàm dưới các dng sau đây:
{ mt biến cu trúc, khi đó tham đối thc s
mt cu trúc.
{ mt con trcu trúc, tham đối thc sđịa
chca mt cu trúc.
{ mt tham chiếu cu trúc, tham đối thc s
mt cu trúc.
{ mt mng cu trúc hình thc hoc con tr
mng, tham đối thc s tên mng cu trúc.
11
Giá trca hàm là cu trúc
zCũng tương t như các kiu dliu cơ
bn, giá trtrli ca mt hàm cũng có th
các cu trúc dưới các dng sau:
{ mt biến cu trúc.
{ mt con trcu trúc.
{ mt tham chiếu cu trúc.
12
Cu trúc vi thành phn kiu bit
(trường)
3
13
Khái nim
zThông thường các biến trong C, C++ s
dng mt snguyên các byte để lưu tr
zTrong các trường hp cn thao tác vi
các bit, ta sdng khai báo trường
14
Khai báo trường
struct <tên cu trúc> {
int <tên trường>:<sbit>;
....
<tên kiu> <tên trường>’
...
}
zChú ý: Tên trường bit phi có kiu int
hoc unsigned int
15
Khai báo kiu mi
ztypedef <tên kiu> <tên kiu mi>;
z d:
typedef struct vector vector_t;
typedef struct {
int ngay, thang, nam;
} Date;
16
Kiu hp (Union)
17
Khai báo
union <tên kiu> {
Danh sách các thành phn;
};
zCách truy cp đến các thành phn: Ging
như kiu cu trúc
18
Kiu lit kê
4
19
z thgán các giá trnguyên liên tiếp
(tính t0) cho các tên gi cthbng
kiu lit kê theo khai báo sau đây:
zenum tên_kiu { d/s tên các giá tr};
z d:
{enum Bool {false, true};
Khai báo
20
Sdng kiu lit kê
Biến tham chiếu
int i;
int &j=i; // j là mt cách tham chiếu khác
// ca biến i
j = 5; // Sau lnh gán này i cũng có giá tr5
Biến tham chiếu phi được khi to khi
khai báo