Compartir a través de


Macro _countof

Calcula el número de elementos de una matriz asignada estáticamente.

Sintaxis

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

Parámetros

array
Nombre de una matriz.

Valor devuelto

Número de elementos de la matriz, expresados como un size_t.

Comentarios

_countof se implementa como una macro de preprocesador similar a una función. La versión de C++ tiene maquinaria de plantilla adicional para detectar en tiempo de compilación si se pasa un puntero en lugar de una matriz declarada estáticamente.

Asegúrese de que array es realmente una matriz, no un puntero. En C, _countof producirá resultados erróneos si array es un puntero. En C++, _countof no se compilará si array es un puntero. Una matriz pasada como parámetro a una función se degrada a un puntero, lo que significa que dentro de la función, no se puede usar _countof para determinar la extensión de la matriz.

Requisitos

Macro Encabezado necesario
_countof <stdlib.h>

Ejemplo

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

Consulte también

Operador sizeof