2012-03-10 21 views

答えて

6

文字列リテラル"abcde"は、文字の配列です。ヌルターミネータを含めて6バイトです。

char*の変数は、という文字へのポインタです。そのサイズはポインタのサイズで、32ビットシステムでは4バイトです。 sizeofはコンパイル時の操作であるため、変数の静的型(この場合はchar*)のみを参照します。何が指摘されているのかは分かりません。可変長配列、C99言語標準

2

最初の例で導入された機能の場合を除いて†

は、プレーンな文字列の長さを返すsizeof()
2番目の例では、sizeof()
- > 32bitsのポインタのサイズが4バイトのを返します。

1

ここ

printf("%d\n", sizeof("abcde")); 

理由は、その6バイト長をNULL考慮した文字列です。

char* str = "abcde"; 
printf("%d\n", sizeof(str)); 

はしたがって

:-) 4つのバイトを32ビットを必要とするポインタであります
関連する問題