Freigeben über


_countof-Makro

Berechnet die Anzahl der Elemente in einem statisch zugeordneten Array.

Syntax

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

Parameter

array
Der Name eines Arrays.

Rückgabewert

Die Anzahl der Elemente im Array als size_t ausgedrückt.

Hinweise

_countof wird als funktionsähnliches Präprozessormakro implementiert. Die C++-Version verfügt über zusätzliche Vorlagenmaschinen, um zur Kompilierungszeit zu erkennen, ob ein Zeiger anstelle eines statisch deklarierten Arrays übergeben wird.

Stellen Sie sicher, array tatsächlich ein Array ist, und kein Zeiger. In C _countof erzeugt fälschliche Ergebnisse, wenn array es sich um einen Zeiger handelt. In C++ kann nicht kompiliert werden, _countof wenn array es sich um einen Zeiger handelt. Ein Array, das als Parameter an eine Funktion übergeben wird, zerfällt auf einen Zeiger, was bedeutet, dass Sie innerhalb der Funktion nicht verwenden _countof können, um den Umfang des Arrays zu bestimmen.

Anforderungen

Makro Erforderlicher Header
_countof <stdlib.h>

Beispiel

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

Siehe auch

sizeof-Operator