
Lập trình nâng cao -Chương 05 -Ngô Công Thắng 1
Chương 5. Kiểu mảng và xâu ký tự
I.Mảng
II.Xâukýtự
III.Bàitậpchương5
Lập trình nâng cao -Chương 05 -Ngô Công Thắng 2
I. Mảng
1.Kháiniệmvềkiểumảng
2.Khaibáobiếnmảngmộtchiều
3.Truynhậpcácphầntửcủamảngmộtchiều
4.Khởitạomảngmộtchiều
5.Mảngnhiềuchiều
6.Chúývềchỉsốcủaphầntửmảng
7.Vào/ravớibiếnmảng

Lập trình nâng cao -Chương 05 -Ngô Công Thắng 3
I.1. Khái niệm về kiểu mảng
†Mảnglàmộtnhómcácbiếnnằmcạnhnhau
cócùngkiểu,cùngtên.Mỗibiếnđượcgọilà
mộtphầntử.Cácphầntửcủamảng đượctruy
nhậptrựctiếpthôngquatênbiếnmảngvàchỉ
số.
†Sốphầntửcủamảng đượcxác địnhngaytừ
khi địnhnghĩaramảng. Đâylà điểmhạnchế
củamảngbởivìnếukhôngdùnghếtcácbiến
củamảngsẽgâylãngphíbộnhớ.
Lập trình nâng cao -Chương 05 -Ngô Công Thắng 4
I.2. Khai báo biến mảng một chiều
†Khaibáobiếnmảnglàxác địnhtênbiếnmảng,kiểu
phầntử,sốchiềuvàkíchthướcmỗichiều.
†Cúphápkhaibáobiếnmảngmộtchiều:
Kiểu_phần_tửTên_biến_mảng[Kíchthước];
trong đókíchthướclàsốphầntửcủamảng,phảichodưới
dạnghằnghoặcbiểuthứchằng.Kiểuphầntửcóthểlàbấtkỳ
kiểunào.
Vídụ:inta[5];
Vídụnày địnhnghĩamộtbiếnmảngcótênlàa,
kiểuphầntửlàint,sốchiềulàmộtvàkíchthước(số
phầntửcủamảng)là5.

Lập trình nâng cao -Chương 05 -Ngô Công Thắng 5
I.3. Truy nhập các phần tử của mảng một chiều
†Cácphầntửcủamảng đượcđánhsố.Cácsố
nàygọilàchỉsố.Phầntửđầutiêncóchỉsốlà
0,phầntửthứ2cóchỉsốlà1,…Mảngcó
kíchthướcnthìphầntửcuốicùngcóchỉsố
n-1.
†Vídụ:nếuta địnhnghĩamộtbiếnmảng
inta[5];
thìta đượcmộtbiếnmảngtênlàacó5phần
tử,phầntửđầutiêncóchỉsốlà0,phầntử
thứ5cóchỉsốlà4.
Lập trình nâng cao -Chương 05 -Ngô Công Thắng 6
I.3. Truy nhập các phần tử của mảng một chiều
†Mỗiphầntửcủamảngcóthểtruynhậptrực
tiếpthôngquatênbiếnmảngvàchỉsốcủanó
đặttrongngoặcvuông[].Chỉsốcủaphầntử
cóthểchodướidạnghằnghoặcbiểuthức.
Tênbiếnmảng[Chỉsố]
†Vídụ:5phầntửcủamảngaởvídụtrêncó
tênlàa[0],a[1],…Tacóthểdùngcáclệnh
sau:
a[0]=100;cout<<a[1];
for(inti=0;i<5;++i)scanf(“%d”,&a[i]);

Lập trình nâng cao -Chương 05 -Ngô Công Thắng 7
I.4. Khởi tạo mảng một chiều
†Tacóthểkhởitạogiátrịchocácphầntửcủa
mảngngaykhikhaibáobằngcáchliệtkêcác
giátrịkhởitạođặttrongngoặc{}.
†Vídụ:Các giá trị khởi tạo
Kích thước mảng
int a[5] = {12, 6, 10, 7, 19};
Dấu chấm phẩy
Lập trình nâng cao -Chương 05 -Ngô Công Thắng 8
I.4. Khởi tạo mảng một chiều (tiếp)
†Nếusốgiátrịkhởitạoíthơnkíchthướcmảngthì
cácphầntửcònlạisẽđượckhởitạobằng0.Nếusố
giátrịkhởitạolớnhơnkíchthướcmảngthìtrình
biêndịchsẽbáolỗi.
Vídụ:inta[3]={6,8};//a[0]=6,a[1]=8,a[2]=0
inta[2]={8,6,9};//Báolỗi
†Vớinhữngmảng đượckhởitạocóthểkhôngcần
xác địnhkíchthướcmảng.Khi đótrìnhbiêndịchsẽ
đếmsốgiátrịkhởitạovàdùngsốđólàmkích
thướcmảng. Vídụ:
inta[]={3,5,8};//sẽđượcmảngcókíchthướclà3

Lập trình nâng cao -Chương 05 -Ngô Công Thắng 9
I.5. Mảng nhiều chiều
†Mảngmộtchiềulàmảngmàcácphầntửcủanó được
truynhậpquamộtchỉsố.Mảngnhiềuchiềulàmảng
màcácphầntửđượctruynhậpquanhiềuchỉsố.
†Cchophépkhaibáocácmảngnhiềuchiềuvớikích
thướcmỗichiềucóthểkhácnhau.Cúphápchungnhư
sau:
KiểuTên_biến_mảng[Kíchthướcchiều1][Kíchthướcchiều2]…;
†Vídụ:
inta[4][3];
Lưuýlàmỗichiềuphảiđượcbaobởicặpngoặc[]
Lập trình nâng cao -Chương 05 -Ngô Công Thắng 10
I.5. Mảng nhiều chiều (tiếp)
†Để truynhậpphầntửcủamảngmchiềuthìtaphải
dùngmchỉsố.Chỉsốcủamỗichiềucógiátrịtừ0đến
kíchthướccủachiềuđótrừđi1.Cúphápchungnhư
sau:
Tên_biến_mảng[chỉsốchiều1][Chỉsốchiều2]…
†Mảng2chiềucóthểxemnhưlàmảngmộtchiềucó
cácphầntửlàmộtmảngmộtchiều.
†Tacũngcóthểkhởitạogiátrịchocácphầntửcủa
mảngnhiềuchiềungaykhi địnhnghĩa.Vídụ:
inta[2][3]={{5,7,9},{3,6,7}};