のサイズ これは、C でよく使用される演算子です。これは、コンパイル時の単項演算子であり、 オペランドのサイズ 。 sizeof の結果は、通常 size_t で示される符号なし整数型です。 sizeof は、整数型や浮動小数点型などのプリミティブ型、ポインター型、または構造体、共用体などの複合データ型を含む、あらゆるデータ型に適用できます。
構文:
sizeof ( Expression );>
どこ ' 表現 ' には、データ型または任意の型の変数を指定できます。
戻る: 指定された式のサイズ size を返します。
時間計算量: ○(1)
補助スペース: ○(1)
sizeof() 演算子の使用法
のサイズ() 演算子はオペランドの種類に応じてさまざまな方法で使用されます。
1. オペランドがデータ型の場合: いつ のサイズ() int、float、char などのデータ型で使用され、単にそのデータ型に割り当てられたメモリ量を返します。
シェザド・プーナワラ
例:
C
// C Program To demonstrate> // sizeof operator> #include> int> main()> {> >printf>(>'%lu
'>,>sizeof>(>char>));> >printf>(>'%lu
'>,>sizeof>(>int>));> >printf>(>'%lu
'>,>sizeof>(>float>));> >printf>(>'%lu'>,>sizeof>(>double>));> >return> 0;> }> |
>
>出力
1 4 4 8>
注記: sizeof() はマシンに応じて異なる出力を与える可能性があります。プログラムは 32 ビット gcc コンパイラーで実行されました。
2. オペランドが式の場合: いつ のサイズ() 式で使用すると、式のサイズが返されます。
例:
C
// C Program To demonstrate> // operand as expression> #include> int> main()> {> >int> a = 0;> >double> d = 10.21;> >printf>(>'%lu'>,>sizeof>(a + d));> >return> 0;> }> |
>
>出力
8>
最初のケースからわかるように、int と double のサイズはそれぞれ 4 と 8 で、a は int 変数ですが、d は double 変数です。最終結果は double になるため、プログラムの出力は 8 バイトになります。
演算子の種類
sizeof() はコンパイル時の演算子です。コンパイル時間とは、ソース コードがバイナリ コードに変換される時間を指します。 () 内のコードは実行 (実行) されません。
例:
C
データリンク層プロトコル
// C Program to illustrate> // that the 'sizeof' operator> // is a 'compile time operator'> #include> int> main(>void>)> {> >int> y;> >int> x = 11;> >// value of x doesn't change> >y =>sizeof>(x++);> >// prints 4 and 11> >printf>(>'%i %i'>, y, x);> >return> (0);> }> |
>
>出力
4 11>
x の値を増分しようとしても、値は変わりません。これは、x が括弧内でインクリメントされ、sizeof() がコンパイル時の演算子であるためです。
Sizeofの必要性
1. 配列内の要素の数を確認するには: Sizeof を使用すると、配列の要素数を自動的に計算できます。
例:
Java入力
C
// C Program> // demonstrate the method> // to find the number of elements> // in an array> #include> int> main()> {> >int> arr[] = { 1, 2, 3, 4, 7, 98, 0, 12, 35, 99, 14 };> >printf>(>'Number of elements:%lu '>,> >sizeof>(arr) />sizeof>(arr[0]));> >return> 0;> }> |
>
>出力
Number of elements:11>
2. メモリのブロックを動的に割り当てるには: sizeof は動的メモリ割り当てによく使用されます。たとえば、10 個の整数を保持するのに十分なメモリを割り当てたいが、その特定のマシンの sizeof(int) がわからない場合です。 sizeof を使用して割り当てることができます。
構文:
int* ptr = (int*)malloc(10 * sizeof(int));>
詳細については、記事を参照してください – メモリのブロックを動的に割り当てる 。