
VC
VC &
&
BB
BB
33
Đặt vấn đề
Ví dụ
Chư ơ ng trình cầ n lư u trữ 3số nguyên?
=> Khai báo 3biế n int a1, a2, a3;
Chư ơ ng trình cầ n lư u trữ 100 số nguyên?
=> Khai báo 100 biế n kiể u số nguyên!
Ngư ờ i dùng muố n nhậ p nsố nguyên?
=> Không thự c hiệ n đư ợ c!
Giả i pháp
Kiể u dữ liệ u mớ i cho phép lư u trữ mộ t dãy
các số nguyên và dễ dàng truy xuấ t.
NMLT - Mả ng mộ t chiề u
VC
VC &
&
BB
BB
44
Dữ liệu kiểu mảng
Khái niệ m
Là mộ t kiể u dữ liệ u có cấ u trúc do ngư ờ i lậ p
trình đị nh nghĩa.
Biể u diễ n mộ t dãy các biế n có cùng kiể u. Ví
dụ : dãy các số nguyên, dãy các ký tự …
Kích thư ớ c đư ợ c xác đị nh ngay khi khai báo
và không bao giờ thay đổ i.
NNLT C luôn chỉ đị nh mộ t khố i nhớ liên tụ c
cho mộ t biế n kiể u mả ng.
NMLT - Mả ng mộ t chiề u

VC
VC &
&
BB
BB
55
Khai báo biến mảng (tường minh)
Tư ờ ng minh
<N1>, …, <Nn> : số lư ợ ng phầ n tử củ a mỗ i chiề u.
Lư u ý
Phả i xác đị nh <số phầ n tử > cụ thể (hằ ng) khi khai báo.
Mả ng nhiề u chiề u: <tổ ng số phầ n tử > = N1*N2*…*Nn
Bộ nhớ sử dụ ng = <tổ ng số phầ n tử >*sizeof(<kiể u cơ sở >)
Bộ nhớ sử dụ ng phả i ít hơ n 64KB (65535 Bytes)
Mộ t dãy liên tụ c có chỉ số từ 0đế n <tổ ng số phầ n tử >-1
NMLT - Mả ng mộ t chiề u
<kiể u cơ sở > <tên biế n mả ng>[<số phầ n tử >];
<kiể u cơ sở > <tên biế n mả ng>[<N1>][<N2>]…[<Nn>];
VC
VC &
&
BB
BB
66
0
1
2
Khai báo biến mảng (tường minh)
Ví dụ
NMLT - Mả ng mộ t chiề u
int Mang1Chieu[10];
0 1 2 3 4 7 85 6 9
Mang1Chieu
int Mang2Chieu[3][4];
0 1 2 3 4 7 85 6 9
Mang2Chieu
10 11

VC
VC &
&
BB
BB
77
Khai báo biến mảng (kô tường minh)
Cú pháp
Không tư ờ ng minh (thông qua khai báo kiể u)
Ví dụ
NMLT - Mả ng mộ t chiề u
typedef <kiể u cơ sở > <tên kiể u mả ng>[<số phầ n tử >];
typedef <kiể u cơ sở > <tên kiể u mả ng>[<N1>]…[<Nn>];
<tên kiể u mả ng> <tên biế n mả ng>;
typedef int Mang1Chieu[10];
typedef int Mang2Chieu[3][4];
Mang1Chieu m1, m2, m3;
Mang2Chieu m4, m5;
VC
VC &
&
BB
BB
88
Số phần tử của mảng
Phả i xác đị nh cụ thể số phầ n tử ngay lúc khai
báo, không đư ợ c sử dụ ng biế n hoặ c hằ ng
thư ờ ng
Nên sử dụ ng chỉ thị tiề n xử lý #define để đị nh
nghĩa số phầ n tử mả ng
NMLT - Mả ng mộ t chiề u
int n1 = 10; int a[n1];
const int n2 = 20; int b[n2];
#define n1 10
#define n2 20
int a[n1]; // int a[10];
int b[n1][n2]; // int b[10][20];

VC
VC &
&
BB
BB
99
Khởi tạo giá trị cho mảng lúc khai báo
Gồ m các cách sau
Khở i tạ o giá trị cho mọ i phầ n tử củ a mả ng
Khở i tạ o giá trị cho mộ t số phầ n tử đầ u mả ng
NMLT - Mả ng mộ t chiề u
int a[4] = {2912,1706,1506,1904};
2912
2912 1706
1706 1506
1506 1904
1904
0 1 2 3
a
int a[4] = {2912,1706};
2912
2912 1706
1706 0
00
0
0 1 2 3
a
VC
VC &
&
BB
BB
1010
Khởi tạo giá trị cho mảng lúc khai báo
Gồ m các cách sau
Khở i tạ o giá trị 0cho mọ i phầ n tử củ a mả ng
Tự độ ng xác đị nh số lư ợ ng phầ n tử
NMLT - Mả ng mộ t chiề u
int a[4] = {0};
0
00
00
00
0
0 1 2 3
a
int a[] = {2912,1706,1506,1904};
2912
2912 1706
1706 1506
1506 1904
1904
0 1 2 3
a


