Catatan
Akses ke halaman ini memerlukan otorisasi. Anda dapat mencoba masuk atau mengubah direktori.
Akses ke halaman ini memerlukan otorisasi. Anda dapat mencoba mengubah direktori.
Menghitung jumlah elemen dalam array yang dialokasikan secara statis.
Sintaks
#define _countof(array) (sizeof(array) / sizeof(array[0]))
Parameter
array
Nama array.
Nilai hasil
Jumlah elemen dalam array, dinyatakan sebagai size_t.
Keterangan
_countof diimplementasikan sebagai makro praprosesor seperti fungsi. Versi C++ memiliki mesin templat tambahan untuk dideteksi pada waktu kompilasi jika penunjuk diteruskan alih-alih array yang dideklarasikan secara statis.
Pastikan bahwa array sebenarnya adalah array, bukan penunjuk. Di C, _countof menghasilkan hasil yang salah jika array merupakan penunjuk. Di C++, _countof gagal mengkompilasi jika array adalah penunjuk. Array yang diteruskan sebagai parameter ke fungsi membusuk ke penunjuk, yang berarti bahwa dalam fungsi, Anda tidak dapat menggunakan _countof untuk menentukan tingkat array.
Persyaratan
| Makro | Header yang diperlukan |
|---|---|
_countof |
<stdlib.h> |
Contoh
// crt_countof.cpp
#define _UNICODE
#include <stdio.h>
#include <stdlib.h>
#include <tchar.h>
int main( void )
{
_TCHAR arr[20], *p;
printf( "sizeof(arr) = %zu bytes\n", sizeof(arr) );
printf( "_countof(arr) = %zu elements\n", _countof(arr) );
// In C++, the following line would generate a compile-time error:
// printf( "%zu\n", _countof(p) ); // error C2784 (because p is a pointer)
_tcscpy_s( arr, _countof(arr), _T("a string") );
// unlike sizeof, _countof works here for both narrow- and wide-character strings
}
sizeof(arr) = 40 bytes
_countof(arr) = 20 elements