【C言語】
sizeof演算子は関数ではない
strlen()でもない

■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)モードでの実行結果

3
1024
3
8