bangtqh@hotmail.com
K THUT LP TRÌNH C
Chương 6: Các kiu dliu nâng cao
04/2010
Kthut lp trình C - Kiu Dliu nâng cao 2
bangtqh@hotmail.com
Các kiu dliu nâng cao
Kiu con tr
Kiu mng
Kiu Cu trúc (struct) và hp (union)
Kiu File – truy xut file
04/2010
Kthut lp trình C - Kiu Dliu nâng cao 3
bangtqh@hotmail.com
Kiu con tr(pointer)
Đa ch(address)
Vi mi bin có các khái nim:
Tên bin, kiu bin, giá trbin
d:
int i = 1;
Bin i kiu snguyên có giá tr 1
Máy tính cp phát mt vùng nh2 byte liên tc đ lưu tr giá
trca bin i
Đa chbin sthtca byte đu tiên trong dãy các
byte liên tc nhau máy dành đ lưu tr giá trbin
Đly đa chbin, sdng toán t&
d: &i
Lưu ý, máy tính phân bit các kiu đa ch: đa chkiu int,
đa chkiu float, đa chkiu long, …
04/2010
Kthut lp trình C - Kiu Dliu nâng cao 4
bangtqh@hotmail.com
Kiu con tr(pointer)
Con tr(pointer)
mt bin dùng đcha đa ch
nhiu loi con tr tương ng vi các kiu đa chkhác
nhau
Ch"ng hn, con trkiu int tương ng đa chkiu int, …
pháp khai báo con tr

d
int i, j, *pi, *pj;
pi = &i; /* pi là con tr cha ña ch bin i */
pj = &j; /* pj là con tr cha ña ch bin j */
04/2010
Kthut lp trình C - Kiu Dliu nâng cao 5
bangtqh@hotmail.com
Kiu con tr(pointer)
Gis
px là con tr ñn bin x, thì các cánh vit x *px là
tương đương nhau
d
int x, y, *px, *py;
px = &x;
py = &y;
x = 3; /* tương đương vi *px = 3 */
y = 5; /* tương đương vi *py = 5 */
/* Các câu lnh dưi đây là tương ñương: */
x = 10*y;
*px = 10*y;
x = 10*(*py);
*px = 10*(*py);
04/2010
Kthut lp trình C - Kiu Dliu nâng cao 6
bangtqh@hotmail.com
Kiu mng
Mng 1 chiu (xem li slide chương 4)
Mng nhiu chiu
d, khai báo mng 2 chiu
int a[4][10];
//
mng có 4hàng, 10 ct
Truy cp các phn tca mng nhiu chiu
a[0][0], a[0][1], a[i][j]…
dkhác
float arr[3][4][5];
char arrc[4][4];
04/2010
Kthut lp trình C - Kiu Dliu nâng cao 7
bangtqh@hotmail.com
Kiu mng
04/2010
Kthut lp trình C - Kiu Dliu nâng cao 8
bangtqh@hotmail.com
Kiu mng Bài tp
1. Vit chương trình kim tra xem ma trn A
nxn
phi là ma trn tam giác không ?
2. Vit chương trình tìm trung bình cng ca các
phn tâm thuc ma trn A
mxn
3. Cho 1 snguyên N (l$ 3). Hãy đin vào ma
trn A
nxn
các giá trt%1 n2 sao cho trn đó tha
mãn điu kin. T&ng mi hàng = T&ng mi ct =
T&ng mi đư'ng chéo.
4. Vit chương trình tính đnh thc ca ma trn
vuông A
nxn
04/2010
Kthut lp trình C - Kiu Dliu nâng cao 9
bangtqh@hotmail.com
Kiu cu trúc (struct)
Kiu cu trúc cho phép to ra kiu dliu mi g(m
các phn tdliu có kiu khác nhau nhưng liên
kt vi nhau
Kiu cu trúc (structure) còn đưc g)i là kiu bn
ghi (record)
Kiu cu trúc g(m nhiu thành phn dliu khác
nhau
Các thành phn dliu đưc g)i là các trư'ng
(field)
Dùng t%khóa struct ñ ñnh nghĩa kiu cu trúc
04/2010
Kthut lp trình C - Kiu Dliu nâng cao 10
bangtqh@hotmail.com
Kiu cu trúc (struct)
d:dùng kiu cu trúc mô tdliu là ña ch
Đa chg(m các thông tin: snhà, tên đư'ng, tên thành
ph
Ho+c có thkhai báo các bin cu trúc trc tip
không cn khai báo tên cu trúc
struct dia_chi{
int so_nha;
char duong[40];
char thanh_pho[30];
}ong_A, ba_B;
struct {
int so_nha;
char duong[40];
char thanh_pho[30];
}ong_A, ba_B;