sizeof
演算子
型 char
のサイズに対するオペランドのサイズが出力されます。
Note
sizeof ...
演算子の詳細については、「省略記号と可変個引数のテンプレート」を参照してください。
構文
sizeof unary-expression
sizeof ( type-name )
解説
sizeof
演算子の結果は、インクルード ファイル <stddef.h> で定義されている整数型、size_t
です。 この演算子を使うと、コンピューターに依存するデータ サイズをプログラムで指定せずに済みます。
sizeof
のオペランドには、次のいずれかを指定できます。
型の名前。
sizeof
を型名を指定して使用するには、名前をかっこで囲む必要があります。式。 式で使用する場合、
sizeof
はかっこ付きでもかっこなしでも指定できます。 式は評価されません。
sizeof
演算子を char
型のオブジェクトに適用すると、1 になります。 sizeof
演算子を配列に適用すると、配列識別子によって表されるポインターのサイズではなく、その配列の合計バイト数になります。 配列識別子によって表されるポインターのサイズを取得するには、sizeof
を使用する関数にそれをパラメーターとして渡します。 次に例を示します。
例
#include <iostream>
using namespace std;
size_t getPtrSize( char *ptr )
{
return sizeof( ptr );
}
int main()
{
char szHello[] = "Hello, world!";
cout << "The size of a char is: "
<< sizeof( char )
<< "\nThe length of " << szHello << " is: "
<< sizeof szHello
<< "\nThe size of the pointer is "
<< getPtrSize( szHello ) << endl;
}
出力例
The size of a char is: 1
The length of Hello, world! is: 14
The size of the pointer is 4
sizeof
演算子を class
、struct
、または union
型に適用すると、結果はその型のオブジェクトのバイト数に、ワード境界にメンバーをアラインするために追加されたパディングを加えたものになります。 結果は、個々のメンバーのストレージ要件を追加することで計算されたサイズには必ずしも対応しません。 /Zp コンパイラ オプションおよび pack プラグマは、メンバーのアラインメント境界に影響します。
sizeof
演算子は、空のクラスの場合でも 0 を生成しません。
sizeof
演算子は、次のオペランドには使用できません。
関数 (ただし、関数へのポインターに
sizeof
を適用することはできます。)ビット フィールド。
定義されていないクラス。
void
型です。動的に割り当てられる配列。
外部配列。
不完全な型。
かっこで囲まれた不完全な型の名前。
sizeof
演算子を参照に適用すると、結果は sizeof
をオブジェクト自体に適用した場合と同じになります。
可変長配列が構造の最後の要素である場合、sizeof
演算子は配列のない構造体のサイズを返します。
sizeof
演算子は、多くの場合、次の形式の式を使用して配列の要素の数を計算するために使用されます。
sizeof array / sizeof array[0]
関連項目
フィードバック
https://aka.ms/ContentUserFeedback」を参照してください。
以下は間もなく提供いたします。2024 年を通じて、コンテンツのフィードバック メカニズムとして GitHub の issue を段階的に廃止し、新しいフィードバック システムに置き換えます。 詳細については、「フィードバックの送信と表示