Condividi tramite


_countof Macro

Calcola il numero di elementi in una matrice allocata in modo statico.

Sintassi

#define _countof(array) (sizeof(array) / sizeof(array[0]))

Parametri

array
Il nome di una matrice.

Valore restituito

Numero di elementi nella matrice, espresso come un size_t.

Osservazioni:

_countof viene implementato come macro del preprocessore simile a una funzione. La versione C++ include macchinari di modello aggiuntivi per rilevare in fase di compilazione se viene passato un puntatore anziché una matrice dichiarata staticamente.

Assicurarsi che array sia effettivamente una matrice, non un puntatore. In C produce _countof risultati errati se array è un puntatore. In C++, _countof non riesce a compilare se array è un puntatore. Una matrice passata come parametro a una funzione decadi a un puntatore, ovvero all'interno della funzione, non è possibile usare _countof per determinare l'extent della matrice.

Requisiti

Macro Intestazione obbligatoria
_countof <stdlib.h>

Esempio

// 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

Vedi anche

Operatore sizeof