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

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

DDD
リリース: 2024-12-17 19:56:11
オリジナル
645 人が閲覧しました

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

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

プログラミングでは、変数はポインターまたは配列のいずれかになります。変数を宣言する場合、ポインターと配列の構文は異なります。データを正しく操作するには、この 2 つの違いを理解することが重要です。

char a[] = "string";

このコード行は、大きな文字の配列を作成します。文字列「string」をヌル終端文字とともに保存するだけで十分です。配列「a」は文字列「string」の要素で初期化されます。配列は後で変更でき、そのサイズはコンパイル時に判明するため、「sizeof」演算子を使用してその長さを決定できます。

char *p = "string";

このコード行は、文字列「string」のアドレスを指す「p」という名前のポインターを作成します。ポインタ「p」は変更できませんが、それが指す文字列は変更できるため、未定義の動作が発生します。

比較:

  • ストレージ: 配列は連続したメモリ空間を占有しますが、ポインタはメモリのアドレスを格納しますlocation.
  • 変更: 配列では要素の変更が可能ですが、文字列を指すポインタは読み取り専用メモリに常駐することが多いため、変更しないでください。
  • Size: 配列のサイズはコンパイル時に決定される固定サイズですが、ポインターが指す文字列のサイズは次を使用して決定する必要があります。 「sizeof」はポインター自体のサイズを返すため、「strlen()」のような関数。
  • 使用法: 変更する必要があるデータには配列を使用し、定数データにはポインターを使用します。

注: 質問内の例には、タイプミス、「?」は、このコンテキストでは有効な演算子ではありません。意図した質問は配列とポインタの違いに関するものであると想定されています。

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

ソース:php.cn
このウェブサイトの声明
この記事の内容はネチズンが自主的に寄稿したものであり、著作権は原著者に帰属します。このサイトは、それに相当する法的責任を負いません。盗作または侵害の疑いのあるコンテンツを見つけた場合は、admin@php.cn までご連絡ください。
人気のチュートリアル
詳細>
最新のダウンロード
詳細>
ウェブエフェクト
公式サイト
サイト素材
フロントエンドテンプレート