C言語なら、俺に聞け! <7>
■ このスレッドは過去ログ倉庫に格納されています
0127デフォルトの名無しさん
NGNGchar *c = "a"; の"a"と
char d[2] = "a"; の"a"は意味が違ってる。
char d[2] = "a"; は、単に char d[2] = { 'a', '\0' }; の省略形。
char *c = "a"; の"a"は変数名のない配列…というのは、当たらずとも
遠からずというか、やっぱり文字列定数は文字列定数としか言いようが
ないような。ただの配列だと思い込んでると思わぬ所でハマる。
上記の後で、
d[0] = 'b'; はOKだけど
c[0] = 'b'; ってやるのは規格上NG(実際は動いたりするのでたちが悪い)
更に、
char *e = "a"; とやった場合、c == e である場合も c != e である場合もある
(規格上はどちらも間違いではない)
■ このスレッドは過去ログ倉庫に格納されています