C言語のsizeof演算子の使い方を完全ガイド!初心者でもわかる型サイズの確認方法
生徒
「C言語には演算子がたくさんありますよね?その中で、sizeofってどんな役割なんですか?」
先生
「sizeofは、変数や型の大きさを調べるための演算子です。」
生徒
「変数の大きさってどういうことですか?」
先生
「プログラムで扱うデータは、コンピューターのメモリを使って保存されます。sizeofを使うと、そのデータが何バイトのメモリを使うか確認できます。」
生徒
「メモリって聞くと、自分で設定しないといけないのかなと思って難しそうですね…。」
先生
「心配いりません。sizeofを知っておくと、メモリの仕組みを理解しやすくなり、安心してプログラムが書けるようになりますよ。」
1. sizeof演算子とは?
C言語のsizeof演算子は、変数やデータ型がメモリ上で何バイト使うか調べるための演算子です。「バイトとは、データを保存する最小の単位」です。例えば、小さな数字は少ないバイト、大きな数字や文字列はたくさんのバイトを使います。
書き方はとても簡単で、型または変数の名前をsizeofに渡すだけです。
sizeof(int);
sizeof(a);
このように書くと、int型や変数aが何バイト使っているのかをC言語が教えてくれます。
2. 実際に型のサイズを調べてみよう
今から、よく使う基本データ型のサイズを調べてみましょう。ここでは、C言語の標準関数printfで結果を表示します。
#include <stdio.h>
int main(void)
{
printf("intのサイズは %zu バイトです\n", sizeof(int));
printf("charのサイズは %zu バイトです\n", sizeof(char));
printf("doubleのサイズは %zu バイトです\n", sizeof(double));
return 0;
}
intのサイズは 4 バイトです
charのサイズは 1 バイトです
doubleのサイズは 8 バイトです
このように、人間が数えなくても、C言語が自動的にサイズを計算してくれます。
3. なぜサイズを調べる必要があるのか?
「数字が入るんだから何バイトでもいいじゃないか」と思うかもしれません。しかし、コンピューターは決まった量のメモリしか持っていません。無限に使えるわけではないので、どのデータがどれだけメモリを使うか知っておくことは重要です。
C言語の学習でよく出てくるintやcharといった型は、それぞれ使うメモリの量が違います。型のサイズを理解すると、メモリを効率よく使えるようになり、大きなプログラムでも安心して作れるようになります。
4. 変数のサイズを調べる方法
sizeofはデータ型だけではなく「変数を指定して調べる」こともできます。
#include <stdio.h>
int main(void)
{
int a = 10;
double b = 3.14;
char c = 'A';
printf("変数aのサイズ: %zu バイト\n", sizeof(a));
printf("変数bのサイズ: %zu バイト\n", sizeof(b));
printf("変数cのサイズ: %zu バイト\n", sizeof(c));
return 0;
}
変数aのサイズ: 4 バイト
変数bのサイズ: 8 バイト
変数cのサイズ: 1 バイト
型と同じく、変数のサイズも簡単に確認できます。C言語のプログラムはパソコンごとに動きが変わる場合もあるため、実際にサイズを確認できることはとても便利です。
5. 配列のサイズを調べる方法
sizeof演算子は配列にも使うことができます。配列は同じ型のデータを並べて保存する入れ物です。例えば、10個の整数が入る配列は、整数10個分のバイトを使います。
#include <stdio.h>
int main(void)
{
int array[10];
printf("配列arrayのサイズ: %zu バイト\n", sizeof(array));
return 0;
}
配列arrayのサイズ: 40 バイト
int型が4バイトの環境では、4 × 10で40バイトになります。このように、配列のサイズをすぐに調べられるのもsizeofの便利なところです。
6. sizeofは計算式にも使える
配列の要素数を知りたいとき、sizeofを使うととても便利です。配列全体のサイズを、1つの要素のサイズで割るだけで求められます。
#include <stdio.h>
int main(void)
{
int array[10];
int count = sizeof(array) / sizeof(array[0]);
printf("配列の要素数: %d\n", count);
return 0;
}
配列の要素数: 10
この書き方はC言語ではよく使われる有名な方法で、プログラマーが手で数えなくても、プログラムが正しい値を教えてくれます。
7. sizeofの注意ポイント
sizeof演算子には、知っておいた方がいいポイントがあります。
まず、sizeofは演算子ですが、関数ではありません。見た目が関数に似ていても、処理の仕組みが違います。
さらに、文字列を扱うときは注意が必要です。文字列は終わりを示すために「ヌル文字」という特別な文字も含まれます。このため、見た目の長さと実際のサイズが一致しないことがあります。
char str[] = "ABC";
printf("%zu\n", sizeof(str));
4
ABCは3文字ですが、最後にヌル文字が追加されて4バイトになります。このような仕組みを知っておくと、C言語で文字を扱うときに困りません。
8. sizeofはC言語のメモリ管理を学ぶ第一歩
コンピューターは、見えないところでメモリを使って動いています。sizeofを理解すると、どのくらいのデータがメモリに置かれているかが分かり、プログラムの安全性も高まります。
たとえば、配列に入れられるデータ量が分からないと、入れすぎてプログラムが壊れてしまうことがありますが、サイズを把握していれば安心して書けるようになります。
C言語では、メモリの管理がとても大切な考え方です。その最初の入り口として、sizeof演算子はとても重要な存在です。