Khai báo mảng
Tương tự như khai báo một biến bình thường, một mảng có thể dễ dàng được khai báo như sau:
kiểu_dữ_liệu tên_mảng [số_phần_tử];
-
Kiểu dữ liệu ở đây có thể là các kiểu dữ liệu có sẵn trong C++ hay do người dùng tự định nghĩa.
-
Tên mảng được đặt cùng quy tắc với tên biến trong C++, tham khảo tại bài viết.
-
Số phần tử của mảng phải là số nguyên dương lớn hơn 0.
Ví dụ
Khai báo mảng int
có tên number
gồm 5 phần tử như sau:
int number [5];
Lưu ý
Vì đây là khai báo tĩnh, số vùng nhớ cấp phát cho mảng được xác định từ giai đoạn biên dịch, trước khi chương trình chạy. Cho nên, số_phần_tử
ở đây phải mang giá trị hằng số.
#include <iostream> using namespace std; int main() { const int a = 5; int b = 5; int c[a]; // Khong bao loi, vi a là hang so. int d[5]; // Khong bao loi, vi 5 là hang so. int e[b]; // Bao loi, vi b khong la hang so. }
Khởi tạo giá trị cho các phần tử mảng
Sau khi khai báo, nếu không khởi tạo giá trị ban đầu cho các phần tử, thì các phần tử sẽ mang giá trị rác. Tuy nhiên, nếu là mảng static
, thì các phần tử sẽ được khởi tạo giá trị 0
với các kiểu dữ liệu số học và NULL
với kiểu con trỏ. Ví dụ khi khai báo:
static int a[5];
sẽ được mảng a
chứa 5 giá trị 0
mà không cần khởi tạo.
Khởi tạo ngay khi khai báo
Hoàn toàn có thể khởi tạo giá trị cho các phần tử ngay khi khai báo mảng.
kiểu_dữ_liệu tên_mảng [số_phần_tử] = {giá_trị_1, giá_trị_2, giá_trị_3...};
Ví dụ
khi khai báo
int a[5] = { 1, 2, 3, 4, 5 };
ta được mảng a với các giá trị a[0]
, a[1]
, a[2]
, a[3]
, a[4]
có giá trị lần lượt là 1
, 2
, 3
, 4
, 5
.
Lưu ý
-
Nếu số lượng giá trị trong dấu
{...}
lớn hơnsố_phần_tử
của mảng, trình biên dịch sẽ báo lỗi. -
Nếu số lượng giá trị trong dấu
{...}
nhỏ hơnsố_phần_tử
của mảng, những phần tử còn lại sẽ được gán giá trị mặc định là0
.
Ví dụ
-
Khai báo
int a[5] = { 1, 2, 3};
được mảnga
với các giá trịa[0]
,a[1]
,a[2]
,a[3]
,a[4]
có giá trị lần lượt là1
,2
,3
,0
,0
. -
Khai báo
int a[5] = { };
được mảnga
với tất cả các phần tử đều có giá trị0
.
Ngoài ra cũng có thể khai báo một mảng và gán giá trị cho nó mà không biết trước số lượng phần tử bằng cách bỏ trống phần số_phần_tử
.
-
Khai báo
int a[] = { 1, 2, 3};
được mảnga
- 3 phần tử với các giá trịa[0]
,a[1]
,a[2]
có giá trị lần lượt là1
,2
,3
. -
Giống như việc khai báo mảng với
số_phần_tử = 0
, khai báoint a[] = {};
cũng sẽ báo lỗi tương tự.
Khởi tạo sau khi khai báo
Đôi khi không cần thiết phải khởi tạo giá trị cho mảng ngay lập tức, có thể làm việc này bằng cách gán thủ công từng phần tử, hoặc sử dụng vòng lặp:
#include <iostream> using namespace std; int main() { int a[3]; a[0] = 0; a[1] = 2; a[2] = 3; }