Tại sao chúng ta viết sizeof(x) / sizeof(x[0]) thay vì chỉ viết sizeof(x) để xác định kích thước của mảng trong C++

lập trình


toán tử sizeof() tính toán kích thước của mảng như thế nào

Những gì tôi đã thử:

Tôi đã viết sizeof(x) để tính kích thước của mảng nhưng tôi không nhận được kết quả như mong đợi.

Giải pháp 1

sizeof trả về số byte được tham số sử dụng: đối với một mảng, kích thước của mỗi phần tử nhân với số phần tử.

Thử cái này xem sao:

C
#include <stdio.h>

int main()
{
    int arr[10];
    printf("%lu:%lu\n", sizeof(arr), sizeof(arr[0]));

    return 0;
}

Và bạn sẽ nhận được kết quả “40:4”: tổng mảng sử dụng 40 byte bộ nhớ và mỗi phần tử trong số 10 phần tử trong mảng sử dụng 4 byte.

Giải pháp 2

Một bổ sung nhỏ: biểu thức bạn đã viết,

C
sizeof( x ) / sizeof( x[0] )

được sử dụng để tính số phần tử trong một mảng. Điều này cũng giống như những gì _countof macro thực hiện trong VisualStudio C++.

Tóm tắt ba biểu thức và kết quả của chúng cho int x[8] :

sizeof(x)               size in bytes of x             : 32
sizeof(x[0])            size in bytes of one item of x : 4
sizeof(x)/sizeof(x[0])  number of items in x           : 8

コメント

タイトルとURLをコピーしました