🌘
[C言語]シングルクォーテーションとダブルクオーテーションの違い
ダブルクオーテーションとシングルクォーテーションのそれぞれの役割、動きが曖昧だったので、メモ。
シングルクォーテーションで囲まれた文字:文字リテラル
ダブルクオーテーションで囲まれた文字:文字列が格納されたアドレス
ルール:
文字はシングルクォーテーション、文字列はダブルクォーテーションで括る
ダブルクオーテーションで囲った文字は文字列として扱われるので、
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