とくにあぶなくないRiSKのブログ

危ないRiSKのブログだったかもしれない。本当はRiSKだけどググラビリティとか取得できるIDの都合でsscriskも使ったり。

文字列リテラルを勘違いしてる気がする

よしいずの雑記帳  C言語における配列とポインタの文字列処理における違い

C言語では、文字列リテラルを定義する方法が二つあります:

* char型の配列によって定義する
* char型のポインタによって定義する

char型の配列によって定義する場合:

/* 以下の文字列リテラルの定義は同等 */
char s = "abcde";
char t[6] = "abcde";
char u
= {'a', 'b', 'c', 'd', 'e', '\0'};

char型のポインタによって定義する場合:

char *p = "abc";

ポインタ変数に対して、以下の定義の仕方はエラーになります:

s, t, u, p のどれも文字列リテラルじゃない件について。この中で文字列リテラルは "abcde" と "abc" だけです。
あと,本題と関係ないけど char const *p = "abc"; にしないと危ない。
他もあやしげ。
よしいずの雑記帳  C言語における文字列リテラルからなる配列