C言語なら俺に聞け(入門編)Part 92
■ このスレッドは過去ログ倉庫に格納されています
0499デフォルトの名無しさん
2011/11/21(月) 23:22:15.25ってことはこうですかね
パターン1:char str[(要素数)] (= 文字列リテラル);
要素数分の配列を用意してから、文字列リテラルで初期化する。文字列リテラルの代わりに{'A','B','C',・・・'\0'}でも初期化出来るが、ヌル文字は自動で追加されない。
文字列リテラルで初期化した場合のみ、要素数を省略可能。その場合、文字列リテラルの文字数+1(ヌル文字分)の要素数の配列となる。
要素数を指定した場合、文字列リテラルの文字数に関わらず指定した要素数の配列になるが、要素数≧文字列リテラルの文字数+1でないと初期化するときにエラーが出る。
後から各要素に代入可能だが、ヌル文字のない文字列にならないよう注意しなければいけない。
パターン2:char *str = 文字列リテラル;
書き換え不能な文字列リテラルがメモリ上に用意されたあと、文字列の先頭アドレスがstrに格納される。アドレスの参照先は変更可能だが、文字列の各要素に代入は出来ない。
それにしてもC言語の文字列の扱いは面倒ですねぇ
なんかまだ落とし穴がありそう・・・
■ このスレッドは過去ログ倉庫に格納されています