■この記事の概要
この記事では、C言語のsizeof
演算子を関数と誤解しないための解説を行い、strlen
との違いやコード例を通して正確な使い方を説明しています。
■sizeof演算子は関数ではない
sizeof演算子を関数だと思っている人は結構多いです。
(参考YAHOO知恵袋の検索結果)
この人達は
【sizeofの戻り値】って書くのだけれど、
1+1の戻り値って言わないですよね。
聖典プログラミング言語C
A7.4.8 sizeof演算子では
【結果(result)】という表現を使ってます。
なので、
【sizeofの戻り値】ではなくて
【sizeofの結果】と書こう。
■sizeof演算子とstrlen関数の違い(配列の時)
#include <stdio.h>
#include <string.h>
int main(void)
{
char ary[1024] = "123";
printf("文字列の長さ = %zu\n",strlen(ary));
printf("配列のサイズ = %zu\n",sizeof(ary));
}
●Linux64bit(LP64)モードでの実行結果
./a.out
文字列の長さ = 3
配列のサイズ = 1024
■sizeof演算子とstrlen関数の違い(ポインタの時)
#include <stdio.h>
#include <string.h>
int main(void)
{
char *ptr = "123";
printf("文字列の長さ = %zu\n", strlen(ptr));
printf("ポインタのサイズ = %zu\n", sizeof(ptr));
}
●Linux64bit(LP64)モードでの実行結果
./a.out
文字列の長さ = 3
ポインタのサイズ = 8