Mảng
Biến mảng được định nghĩa bằng cách đặc tả kích thước mảng và kiểu các phần tử của nó. Ví dụ một mảng biểu diễn 10 thước đo chiều cao (mỗi phần tử là một số nguyên) có thể được định nghĩa như sau:
int heights[10];
Mồi phần tử trong mảng có thế được truy xuất thông qua chi số mảng. Phần tử đầu tiên của mảng luôn có chỉ số 0. Vì thế, heights[0] và heights[9] biểu thị tương ứng cho phần tử đầu và phần tử cuối của mảng heights.
Mồi phần tử của mảng hàghts có thể được xem như là một biến số nguyên. Vì thế, ví dụ đế đặt phần tử thứ ba tới giá trị 177 chúng ta có thể viết:
heights[2] = 177;
Việc cố gắng truy xuất một phần tử mảng không tồn tại (ví dụ, heights[-l] hoặc heights[10]) dẫn tới lỗi thực thi rất nghiêm trọng (được gọi là lỗi ‘vượt’ ngoài biên’).
Việc xử lý mảng thường liên quan đến một vòng lặp duyệt qua các phần tử mảng lần lượt từng phần tử một. Đoạn mã dưới đây minh họa điều này bằng việc sử dụng một hàm nhận vào một mảng các số nguyên và trả về giá trị trung bình của các phần tử có trong mảng.
const int size = 3;
double Average(int nums[size])
{
double average = 0;
for (int i = 0; i < size; i++)
average += nums[i];
return average/size;
}
Giống như các biến khác, một mảng có thế có một bộ khỏi tạo. Các dấu ngoặc nhọn được sử dụng đế đặc tả danh sách các giá trị khởi tạo được phân cách bởi dấu phấy cho các phần tử mảng. Ví dụ,
int nums[3]= {5,10,15};
Khởi tạo ba phần tử của mảng nums tương ứng tới 5, 10, và 15. Khi số giá trị trong bộ khởi tạo nhỏ hơn số phần tử thì các phần tử còn lại được khởi tạo tới 0:
int nums[3] = {5,10}; // nums[2] khởi tạo tới 0
Khi bộ khởi tạo được sử dụng hoàn tất thì kích cỡ mảng trở thành dư thừa bởi vì số các phần tử là ấn trong bộ khởi tạo. Vì thế định nghĩa đầu tiên của nums có thế viết tương đương như sau:
int nums[] = {5,10,15};
//không cần khai báo tuờng minh, kích cỡ của mang
Một tình huống khác mà kích cỡ có thế được bỏ qua đối với mảng tham số hàm. Ví dụ, hàm Average ở trên có thể được cải tiến bằng cách viết lại nó sao cho kích cỡ mảng nums không cố định tới một hằng mà được chỉ định bàng một tham số thêm vào. Đoạn mã sau minh họa điều này:
double Average(int nums[], int size)
{
double average = 0;
for (int i =0; i<size; i++)
average += nums[i];
return average;
}
Một chuỗi C++ chỉ là một mảng các ký tự. Ví dụ,
char str[] = "HELLO";
Định nghĩa chuồi str là một mảng của 6 ký tự: năm chữ cái và một ký tự null. Ký tự kết thúc null được chèn vào bởi trình biên dịch. Trái lại,
char strQ = {‘H’, ‘E’, ‘L’, ‘L’, ‘O’};
Định nghĩa str là mảng của 5 ký tự.
Kích cỡ của mảng có thể được tính một cách dễ dàng nhờ vào toàn tử sizeof. Ví dụ, với mảng ar đã cho mà kiểu phần tử của nó là Type thì kích cỡ của ar là:
sizeof(ar) / sizeof(Type)