_countof、sizeof、strlenの違いと使い方
1 countof:システム定義のマクロで、要素の配列の要素の個数を求めます
2 sizeof:ヘッダファイルのtypedefはunsigned intであり、その値はコンパイル時に計算され、確立された最大オブジェクトを実現するバイトサイズを収容できることを保証する演算子
3 strlen:実行時に実行され、文字列の長さを返す関数です.この文字列は、自分で定義したものであってもよいし、メモリ内でランダムなものであってもよい.この関数が実際に完了した機能は、終了文字列を表す最初のアドレスからエンドマークNULLに遭遇するまで遍歴する.返される長さのサイズにNULLは含まれません
2 sizeof:ヘッダファイルのtypedefはunsigned intであり、その値はコンパイル時に計算され、確立された最大オブジェクトを実現するバイトサイズを収容できることを保証する演算子
3 strlen:実行時に実行され、文字列の長さを返す関数です.この文字列は、自分で定義したものであってもよいし、メモリ内でランダムなものであってもよい.この関数が実際に完了した機能は、終了文字列を表す最初のアドレスからエンドマークNULLに遭遇するまで遍歴する.返される長さのサイズにNULLは含まれません
// crt_countof.cpp
#define _UNICODE
#include
#include
#include
int main( void )
{
_TCHAR arr[20], *p;
printf( "sizeof(arr) = %d bytes
", sizeof(arr) );
printf( "_countof(arr) = %d elements
", _countof(arr) );
// In C++, the following line would generate a compile-time error:
// printf( "%d
", _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 _countof(arr):20