❤恋するコンピュータサイエンス❤

コンピュータサイエンス、3DCGをもっと楽しく、もっと本質的に!c言語、c++の記事中心です

int *str = "abc" は可能か?

Q.

int *str = "abc"

は可能か?

 

A.

駄目。

char *str = "abc"

としてchar ポインタ型で文字列は宣言しなければならない。

 

 

C言語ではint型の変数を直接使って文字列を格納することは許可されていません。その主な理由は以下の通りです:

データ型のサイズ: int型は通常、32ビット(4バイト)のデータを格納します。したがって、ASCII文字を表現するには十分な領域があります(ASCII文字は8ビットで表現できます)。しかし、複数の文字を連続して格納するためには、それぞれの文字の間に境界(boundary)が必要です。C言語では、これが自動的に行われるわけではないため、文字列をint型で表現すると、その境界が曖昧になってしまいます。

文字列の終端: C言語の文字列はヌル文字('')で終わります。このヌル文字は文字列の終端を示すための重要なマーカーです。しかし、int型の変数を使って文字列を格納しようとすると、この終端マーカーをどのように配置するかが問題となります。

互換性と標準化: C言語では、文字列はchar型の配列として表現されるという慣習があります。この慣習に従っていれば、他のCプログラムやライブラリとの互換性が保たれます。int型を使った独自の文字列表現を導入すると、そのコードは標準的なCプログラムと互換性がなくなる可能性があります。

以上のような理由から、C言語では文字列をint型の変数に直接格納することは許可されていません。