Kích thước mảng C
Nhận kích thước hoặc chiều dài mảng
Để lấy 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[] = {10, 25, 50, 75, 100};
printf("%lu", sizeof(myNumbers)); //
Prints 20
Hãy tự mình thử » 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 kích thước bộ nhớ của một mảng là điều tuyệt vời khi bạn đang làm việc với các chương trình lớn hơn yêu cầu quản lý bộ nhớ tốt.
Nhưng khi bạn chỉ muốn biết một mảng có bao nhiêu phần tử, bạn có thể sử dụng công thức sau (chia kích thước của mảng cho kích thước của một phần tử mảng):
Ví dụ
int myNumbers[] = {10, 25, 50, 75, 100};
int length = sizeof(myNumbers) /
sizeof(myNumbers[0]) ;
printf("%d", length); // Prints 5
Hãy tự mình thử »Tạo vòng lặp tốt hơn
Trong phần vòng lặp mảng ở chương trước, chúng ta đã viết kích thước của mảng trong điều kiện vòng lặp ( i < 4
). Đ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 công thức sizeof
từ ví dụ trên, giờ đây chúng ta có thể tạo các vòng lặp hoạt động với các mảng có kích thước bất kỳ, điều này bền vững hơn.
Thay vì viết:
Ví dụ
int myNumbers[] = {25, 50, 75, 100};
int i;
for (i = 0; i < 4; i++)
{
printf("%d\n", myNumbers[i]);
}
Hãy tự mình thử »Tốt hơn nên viết:
Ví dụ
int myNumbers[] = {25, 50, 75, 100};
int length = sizeof(myNumbers)
/ sizeof(myNumbers[0]);
int i;
for (i = 0; i <
length; i++)
{
printf("%d\n", myNumbers[i]);
}
Hãy tự mình thử »