この記事では、C言語で型や変数などのサイズを取得する方法を解説します。
C言語でサイズを取得するには、sizeof
という単項の演算子を使います。
それでは、実際にサイズを取得してみてsizeof
演算子の使い方を見ていきましょう!
スポンサーリンク
sizeof演算子
sizeof
の後に変数や式、カッコでくくった型名を書くことでサイズをバイト単位で返します。戻り値は、size_t
型という実装定義の符号無し整数型で返されます。
sizeof 変数や式
sizeof(変数や式)
sizeof(データ型)
sizeof
は、以下のようなものに使うことができます。
- 整数型
- 浮動小数点数型
- 列挙型
- ポインタ型
- 構造体
- 共用体
- C++のクラス
試しに色々なもののサイズを出力してみます。
#include <stdio.h>
// 構造体
struct Data
{
int i;
double d;
};
int main() {
char c;
short s;
int i;
float f;
struct Data d;
printf("char c: %lu\n", sizeof(c));
printf("short s: %lu\n", sizeof(s));
printf("int i: %lu\n", sizeof i);
printf("float f: %lu\n", sizeof f);
printf("Data d: %lu\n", sizeof d);
printf("int: %lu\n", sizeof(int));
printf("double: %lu\n", sizeof(double));
}
実行結果
char c: 1
short s: 2
int i: 4
float f: 4
Data d: 16
int: 4
double: 8
配列のサイズ
配列のサイズも取得できます。配列のサイズは型のサイズ * 要素数
となっています。
#include <stdio.h>
int main() {
char c[10];
int i[10];
printf("c[10]: %lu\n", sizeof(c));
printf("i[10]: %lu\n", sizeof(i));
}
実行結果
c[10]: 10
i[10]: 40
この性質を利用して全体のサイズ / 要素のサイズ
で要素数を取得することができます。
#include <stdio.h>
int main() {
int i[10];
// 全体のサイズ / 要素のサイズ = 要素数
printf("%lu / %lu = %lu\n", sizeof(i), sizeof(i[0]), sizeof(i) / sizeof(i[0]));
}
実行結果
40 / 4 = 10
サイズを使用することで要素数を簡単に取得することができました。
まとめ
この記事は、変数やデータ型のサイズを取得する方法を解説しました。
sizeof
演算子を使うことで簡単にサイズを取得することができましたが、構造体や配列の場合は、中身によってサイズが異なることに注意しましょう!
それでは今回の内容はここまでです。ではまたどこかで〜( ・∀・)ノ