■1.sizeof演算子は関数ではない
sizeof演算子を関数だと思っている人は結構多く、
この人達は
【sizeofの戻り値】って書くのだけれど、
1+1の戻り値って言わないですよね。
聖典プログラミング言語C
A7.4.8 sizeof演算子では
【結果(result)】という表現を使ってます。
なので、
【sizeofの戻り値】ではなくて
【sizeofの結果】と書こう。
■2.sizeof演算子はstrlen関数でもない
次のプログラムは何と表示されるでしょうか?
#include <stdio.h>
#include <string.h>
int main(void){
char ary[1024] = "123";
printf("%zu\n",strlen(ary));//文字列の長さ:3
printf("%zu\n",sizeof(ary));//配列のサイズ:1024
char *ptr = "123";
printf("%zu\n",strlen(ptr));//ポインタの指す先の文字列の長さ:3
printf("%zu\n",sizeof(ptr));//ポインタのサイズ:LP64=8,ILP32=4
}
Linux64bit(LP64)モードでの実行結果