ホームページ >バックエンド開発 >C++ >`sizeof` は C/C で文字列リテラルをどのように処理しますか?

`sizeof` は C/C で文字列リテラルをどのように処理しますか?

Susan Sarandon
Susan Sarandonオリジナル
2024-12-11 10:00:16508ブラウズ

How Does `sizeof` Handle String Literals in C/C  ?

Sizeof 文字列リテラルの説明

提供されたコード スニペットは、さまざまな文字列リテラルでの sizeof 演算子の動作を強調しています。提起された質問に対する答えを詳しく見てみましょう。

  1. sizeof はなぜ文字列リテラルの長さを計算するのですか?

sizeof 演算子は、指定された式が占めるバイト単位のサイズ。文字列リテラルの場合、文字列の終わりを示す終了文字「 」を含む文字数を返します。この場合、「f」には 2 つの文字 ('f' と ' ') があるため、sizeof("f") は 2 を返します。

  1. 次の場合、文字列リテラルの型は異なりますか? sizeof に与えられますか?

いいえ、sizeof に与えられた場合、文字列リテラルは異なる型を持ちません。型は定数文字の配列として維持されます。ただし、文字列リテラルが関数に渡されるか、ポインターを期待する式で使用される場合、文字列リテラルは自動的に文字ポインターに変換されることに注意することが重要です。ただし、sizeof に渡されると、元の型が文字の配列として保持されます。

この例では:

  • foo は定数文字への定数ポインタであるため、sizeof(foo ) はポインターのサイズを返します。通常、32 ビット システムでは 4 バイトです。
  • bar は定数文字の配列であるため、 sizeof(bar) は配列のサイズを返します。これは 2 バイト (「b」文字に 1 つ、「 」文字に 1 つ) です。

以上が`sizeof` は C/C で文字列リテラルをどのように処理しますか?の詳細内容です。詳細については、PHP 中国語 Web サイトの他の関連記事を参照してください。

声明:
この記事の内容はネチズンが自主的に寄稿したものであり、著作権は原著者に帰属します。このサイトは、それに相当する法的責任を負いません。盗作または侵害の疑いのあるコンテンツを見つけた場合は、admin@php.cn までご連絡ください。