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);}
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