ホームページ >バックエンド開発 >C++ >`char a[] = 'string';` と `char *p = 'string';` の違いは何ですか?

`char a[] = 'string';` と `char *p = 'string';` の違いは何ですか?

Patricia Arquette
Patricia Arquetteオリジナル
2024-12-15 15:04:29763ブラウズ

What's the Difference Between `char a[] =

「char a[] = ?string?;」の違いおよび "char *p = ?string?;"

インタビュアーの質問にはタイプミスが含まれています。演算子は意味的に有効ではありません。タイプミスを仮定すると、意図した質問を解釈できます:

「char a[] = "string";」の違いは何ですか?および "char *p = "string";"?

配列とポインター

これらの宣言の主な違いは、作成されるデータ構造にあります。 :

  • 配列 (char a[] = "string";"): 文字列リテラル "string" を格納する文字配列を初期化します。ヌル終端文字 (' ') を含む複数の文字を保持できます。配列はメモリ内で変更できます。
  • Pointer (char *p = "string";"): 文字列が格納されているメモリ位置を指すポインタ変数 'p' を初期化します。リテラルの「文字列」が格納されます。読み取り専用の文字列リテラルを指しているため、変更できません。

主な違い

Feature Array Pointer
Data Type Character Array Character Pointer
Modificability Modifiable Immutable
Size Determination sizeof can be used strlen function must be used
Usage Used when the string content needs modification Used when the string content remains constant

使用上の考慮事項

シナリオに応じて、正しいデータを選択する必要があります構造体:

  • 文字列の内容を操作または変更する必要がある場合は、配列を使用します。
  • 文字列リテラルや保存されたデータを操作する場合など、文字列の不変性が重要な場合はポインタを使用します。

標準コンプライアンス

C では、「const」キーワードなしで文字列リテラルを使用することは非推奨になりました。したがって、正しい宣言は次のようになります。

  • 配列: char a[] = const "string";")
  • ポインタ: const char *p = "string";")

C 対 C注

これらの概念は C ではなく C に特に適用されることに注意してください。 C では文字列の処理が異なり、前述のコード構造は文字列の操作には使用されません。

以上が`char a[] = 'string';` と `char *p = 'string';` の違いは何ですか?の詳細内容です。詳細については、PHP 中国語 Web サイトの他の関連記事を参照してください。

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