文字列リテラルのサイズ
指定されたコードは、さまざまな種類の文字列定数に対する sizeof 演算子の使用法を示しています。出力では、文字列リテラル sizeof("f") のサイズが、文字列リテラルへのポインターのサイズ (sizeof(foo)) および文字配列のサイズ (sizeof(bar) とは異なることがわかります。 )).
なぜ sizeof は文字列リテラルの長さを計算するのですか?
sizeof 演算子オペランドのサイズをバイト単位で計算します。文字列リテラルの場合、オペランドは、終端の null (' ') 文字を含む、対応する文字配列表現です。これは、'f' 文字と ' ' 文字を考慮した、sizeof("f") の 2 の出力を説明しています。
sizeof に与えられた文字列リテラルは異なる型ですか?
いいえ。文字列リテラルの型は const char[N] です。N は、終端の null 文字を含む文字列の長さです。ただし、文字列リテラルを sizeof 演算子に渡す場合、文字列は文字へのポインターの型である const char* 型の式として扱われます。これは、sizeof(foo) の出力 4 が 32 ビット マシン上のポインターのサイズであることを説明しています。
追加ポイント:
以上が「sizeof」が文字列リテラル、ポインタ、文字配列に対して異なる結果を生成するのはなぜですか?の詳細内容です。詳細については、PHP 中国語 Web サイトの他の関連記事を参照してください。