C言語 PR

【C言語】データ型や変数のサイズを取得する方法

記事内に商品プロモーションを含む場合があります

この記事では、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演算子を使うことで簡単にサイズを取得することができましたが、構造体や配列の場合は、中身によってサイズが異なることに注意しましょう!

それでは今回の内容はここまでです。ではまたどこかで〜( ・∀・)ノ