
bangtqh@hotmail.com
K THUT LP 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 – Và 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
– Ví d:
• int i = 1;
• Bin i kiu snguyên có giá trlà 1
• Máy tính cp phát mt vùng nh2 byte liên tc đ lưu tr giá
trca bin i
–Đa chbinlà 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“&”
• Ví 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)
– Là mt bin dùng đcha đa ch
– Có 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, …
– Cú pháp khai báo con tr
– Ví d
int i, j, *pi, *pj;
pi = &i; /* pi là con tr cha ña ch bin i */
pj = &j; /* pj là con tr cha ña ch bin j */

04/2010
Kthut lp trình C - Kiu Dliu nâng cao 5
bangtqh@hotmail.com
Kiu con tr(pointer)
• Giscó
– px là con tr ñn bin x, thì các cánh vit xvà *px là
tương đương nhau
• Ví 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
– Ví d, khai báo mng 2 chiu
int a[4][10];
//
là mng có 4hàng, 10 ct
– Truy cp các phn tca mng nhiu chiu
a[0][0], a[0][1], a[i][j]…
– Ví 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
có
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$và ≥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)
• Ví 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;

