Kích thước mảng C++
Lấy kích thước của một mảng
Để biết kích thước của một mảng, bạn có thể sử dụng toán tử sizeof()
:
Ví dụ
int myNumbers[5] = {10, 20, 30, 40, 50};
cout << sizeof(myNumbers) ;
Kết quả:
20
Tại sao kết quả hiển thị 20
thay vì 5
khi mảng chứa 5 phần tử?
Đó là do toán tử sizeof()
trả về kích thước của một loại tính bằng byte .
Bạn đã học từ chương Kiểu dữ liệu rằng loại int
thường có kích thước 4 byte, vì vậy từ ví dụ trên, 4 x 5 (4 byte x 5 phần tử) = 20 byte .
Để biết một mảng có bao nhiêu phần tử , bạn phải chia kích thước của mảng cho kích thước của kiểu dữ liệu mà nó chứa:
Ví dụ
int myNumbers[5] = {10, 20, 30, 40, 50};
int getArrayLength =
sizeof(myNumbers) / sizeof(int) ;
cout << getArrayLength;
Kết quả:
5
Lặp qua một mảng với sizeof()
Trong Chương Mảng và Vòng lặp , chúng ta đã viết kích thước của mảng trong điều kiện vòng lặp ( i < 5
). Điều này không lý tưởng vì nó chỉ hoạt động với các mảng có kích thước được chỉ định.
Tuy nhiên, bằng cách sử dụng phương pháp sizeof()
từ ví dụ trên, giờ đây chúng ta có thể tạo các vòng lặp hoạt động cho các mảng có kích thước bất kỳ, bền vững hơn.
Thay vì viết:
int myNumbers[5] = {10, 20, 30, 40, 50};
for (int i = 0; i <
5; i++) {
cout << myNumbers[i] <<
"\n";
}
Tốt hơn nên viết:
Ví dụ
int myNumbers[5] = {10, 20, 30, 40, 50};
for (int i = 0; i <
sizeof(myNumbers) / sizeof(int); i++) {
cout << myNumbers[i] <<
"\n";
}
Hãy tự mình thử »Lưu ý rằng, trong C++ phiên bản 11 (2011), bạn cũng có thể sử dụng vòng lặp "for-each" :
Ví dụ
int myNumbers[5] = {10, 20, 30, 40, 50};
for (int i : myNumbers) {
cout << i << "\n";
}
Hãy tự mình thử »Thật tốt khi biết các cách khác nhau để lặp qua một mảng vì bạn có thể gặp tất cả các cách đó trong các chương trình khác nhau.