_countof Macro
Collapse the table of content
Expand the table of content
Important This document may not represent best practices for current development, links to downloads and other resources may no longer be valid. Current recommended version can be found here. ArchiveDisclaimer

_countof Macro

Compute the number of elements in a statically-allocated array.



The name of an array.

The number of elements in the array.

Ensure that array is actually an array, not a pointer. In C, _countof will produce erroneous results if array is a pointer. In C++, _countof will fail to compile if array is a pointer.


Required header



// crt_countof.cpp
#define _UNICODE
#include <stdio.h>
#include <stdlib.h>
#include <tchar.h>

int main( void )
   _TCHAR arr[20], *p;
   printf( "sizeof(arr) = %d bytes\n", sizeof(arr) );
   printf( "_countof(arr) = %d elements\n", _countof(arr) );
   // In C++, the following line would generate a compile-time error:
   // printf( "%d\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
© 2015 Microsoft