🌘

[C言語]シングルクォーテーションとダブルクオーテーションの違い

2022/01/18に公開約600字

ダブルクオーテーションとシングルクォーテーションのそれぞれの役割、動きが曖昧だったので、メモ。

シングルクォーテーションで囲まれた文字:文字リテラル
ダブルクオーテーションで囲まれた文字:文字列が格納されたアドレス

ルール:
文字はシングルクォーテーション、文字列はダブルクォーテーションで括る

ダブルクオーテーションで囲った文字は文字列として扱われるので、

char name = "A";

//正しくは char char[] = "A";
//このようにすれば文字列として扱われる。

はエラーになってしまう。なぜならnameは文字列として宣言されてしまっているから

文字を宣言するのはシングルクォーテーションで囲う。

char name = 'A';

また文字列を編集するにはまとめて行うことはできず、各配列一つずつアクセスして書き換える必要がある。

char name[] = "taro";
name[0] = 'j';

サイズ

文字列(文字配列)のサイズを見ると、

char name[] = "AA";
int size = sizeof(name);
printf("size of name: %d", size);

>>> size of name: 3

このように2文字の文字列なのに、3文字として捉えられている。(char型は1バイト)
これは文字列の最後にはNULL文字(\0)が埋め込まれていて、これが文字列の終端だという印になる。

Discussion

ログインするとコメントできます