Mengapa kita menulis sizeof(x) / sizeof(x[0]) daripada hanya menulis sizeof(x) untuk menentukan ukuran array di C++

pemrograman


bagaimana operator sizeof() menghitung ukuran array

Apa yang saya coba:

Saya menulis sizeof(x) untuk menghitung ukuran array tetapi saya tidak mendapatkan hasil yang diharapkan.

Solusi 1

sizeof mengembalikan jumlah byte yang digunakan oleh parameter: untuk array, ukuran setiap elemen dikalikan dengan jumlah elemen.

Coba ini:

C
#include <stdio.h>

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

    return 0;
}

Dan Anda akan mendapatkan hasil “40:4”: total array menggunakan 40 byte memori, dan masing-masing dari 10 elemen dalam array menggunakan 4 byte.

Solusi 2

Satu tambahan kecil: ekspresi yang Anda tulis,

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

digunakan untuk menghitung jumlah item dalam array. Hal ini sama dengan apa yang terjadi _countof makro melakukannya di VisualStudio C++.

Untuk meringkas tiga ekspresi dan hasilnya 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をコピーしました