C言語のsizeofとstrlen

686 ワード

strlenは関数でsizeofは演算子です.strlenは関数呼び出しを1回行う必要がありますが、sizeofの場合、バッファは既知の文字列で初期化されており、起長は固定されているため、sizeofはコンパイル時にバッファの長さを計算します.
sizeof()は配列の長さをテストしているからです.strlenは文字列の長さをテストします.配列を定義するとき、文字列の後ろに終了フラグ'0'があります.これも計算します.
#include #include main() { char ss[]="string"; printf("%d %d ",sizeof(ss),strlen(ss)); }
コード修正下:#include#include main(){char ss[]=“string”;ss[0]=0;ss[1]='0';ss[2]='0';printf("%d%d",sizeof(ss),strlen(ss);}
  x   x      "string\0",   \0    ,  sizeof(x)  7。
 \0 asccii   0,strlen(x)    \0  ,strlen(x)   0 。
  :=0 ='\0'    。 ='0'             0