【掲示板ご利用上の注意】

 ※題名は具体的に!
 ※学校の課題の丸投げ禁止!
 ※ソースの添付は「HTML変換ツール」で字下げ!
 ※返信の引用は最小限に!
 ※環境(OSとコンパイラ)や症状は具体的に詳しく!
 ※マルチポスト(多重投稿)は謹んで!

 詳しくはこちら



 本当はこんなに大きく書きたくはないのですが、なかなか守っていただけなくて…。
 守ってくださいね。お願いします。(by管理人)

C言語ソース⇒HTML形式ツール   掲示板2こちら


管理者用メニュー    ツリーに戻る    携帯用URL    ホームページ    ログ    タグ一覧

No.19025

配列の初期化について
投稿者---mitsu(2005/01/05 10:06:10)


はじめまして。
早速ですが、質問です。

配列の初期化の方法で、例えば
char array[10];
array[0] = 0;

これで配列が初期化(??)できるというのを聞いたんですが、どういうことでしょうか?
変なことを言っているかもしれませんが、気になったので
よろしくお願いします。


この投稿にコメントする

削除パスワード

発言に関する情報 題名 投稿番号 投稿者名 投稿日時
<子記事> Re:配列の初期化について 19026 あかま 2005/01/05 10:25:11
<子記事> Re:配列の初期化について 19029 Craft 2005/01/05 10:33:32


No.19026

Re:配列の初期化について
投稿者---あかま(2005/01/05 10:25:11)


>配列の初期化の方法で、例えば
>char array[10];
>array[0] = 0;
>
>これで配列が初期化(??)できるというのを聞いたんですが、どういうことでしょうか?
できません。
それは配列の0番目の要素に0を入れているだけです。

char array[10]={0};
なら配列の10個の要素を0に初期化できます。



この投稿にコメントする

削除パスワード

No.19027

Re:配列の初期化について
投稿者---あかま(2005/01/05 10:27:08)


http://www9.plala.or.jp/sgwr-t/c/sec02.html#s2-3
↑に詳しく書いてありました。


この投稿にコメントする

削除パスワード

No.19028

Re:配列の初期化について
投稿者---mitsu(2005/01/05 10:30:09)


ありがとうございます。

私もヘンだと思ったのですが、
あるところでこう書かれているのを見たので・・・

素早いご返答、ありがとうございました。


この投稿にコメントする

削除パスワード

No.19030

Re:配列の初期化について
投稿者---Craft(2005/01/05 10:37:38)


>それは配列の0番目の要素に0を入れているだけです。
>
>char array[10]={0};
>なら配列の10個の要素を0に初期化できます。

宣言後に処理前に値をいれるのは初期化ではなかったんですか。
初投稿でしたが、ちょっと勘違いしていました。


この投稿にコメントする

削除パスワード

No.19031

Re:配列の初期化について
投稿者---mitsu(2005/01/05 10:43:13)


ご返答、ありがとうございます。

ひょっとしたら、
array[0]='\0';
のことかもしれません。これって、どうなりますかね???

どちらにしろ
char array[10]={0};
とするのが正解ですよね。


この投稿にコメントする

削除パスワード

No.19033

Re:配列の初期化について
投稿者---あかま(2005/01/05 10:57:05)


>ひょっとしたら、
>array[0]='\0';
>のことかもしれません。これって、どうなりますかね???
同じです。
array[0]にだけ0が入って、残りの要素には何が入っているかわかりません。


この投稿にコメントする

削除パスワード

No.19035

Re:配列の初期化について
投稿者---mitsu(2005/01/05 11:01:44)


>同じです。
>array[0]にだけ0が入って、残りの要素には何が入っているかわかりません。

やはりそうですか、わかりました。
すみません、ご丁寧に。
ご解説ありがとうございました。


この投稿にコメントする

削除パスワード

No.19032

Re:配列の初期化について
投稿者---あかま(2005/01/05 10:55:36)


>>それは配列の0番目の要素に0を入れているだけです。
>宣言後に処理前に値をいれるのは初期化ではなかったんですか。
いえ、明示的に初期値を与えていれば、宣言後に値を入れても初期化でいいと思います。

この場合は配列の要素1つにしか初期値を与えていなかったので、"配列の初期化"というのはどうかなと思っただけです。



この投稿にコメントする

削除パスワード

No.19034

Re:配列の初期化について
投稿者---Craft(2005/01/05 10:58:40)


>この場合は配列の要素1つにしか初期値を与えていなかったので、"配列の初期化"というのはどうかなと思っただけです。

なるほど、そういうことでしたか。ありがとうございました。


この投稿にコメントする

削除パスワード

No.19029

Re:配列の初期化について
投稿者---Craft(2005/01/05 10:33:32)


>配列の初期化の方法で、例えば
>char array[10];
>array[0] = 0;
>
>これで配列が初期化(??)できるというのを聞いたんですが、どういうことでしょうか?

変数の初期化というのは、プログラム内で使用する変数に、あらかじめ値を代入しておくことをいいます。
なので、この場合 array[0] を 0 に初期化していることになります。

配列を使用しているようなのでご存じのはずですが、arrayは要素10の配列ですので、これだとarray[0]しか初期化されません。
ふつうは配列を宣言して、一部だけ初期化するというのはやらないので、配列を初期化するのであればarray[0]〜array[9]の全てに初期値をセットすべきです。

あと、arrayはchar型で宣言しているので、(上記でも正しく値がセットされますが)文字を代入したほうがいいでしょう。


この投稿にコメントする

削除パスワード

No.19037

Re:配列の初期化について
投稿者---nop(2005/01/05 11:59:28)


>>char array[10];
>>array[0] = 0;
>配列を使用しているようなのでご存じのはずですが、arrayは要素10の配列ですので、これだとarray[0]しか初期化されません。
>ふつうは配列を宣言して、一部だけ初期化するというのはやらないので、配列を初期化するのであればarray[0]〜array[9]の全てに初期値をセットすべきです。

この場合、「array」を文字列として使用する事が考えられます。
「char 型の配列」を文字列として利用する場合、
要素の先頭に「'\0'」を代入するだけでよい場合もあり得るので、
あながち間違いとも言い切れないかと思います。


# この様な場合でも、個人的には全要素を'\0'に初期化した方が良いと思うけどね。


この投稿にコメントする

削除パスワード

No.19040

Re:配列の初期化について
投稿者---Craft(2005/01/05 13:25:09)


>この場合、「array」を文字列として使用する事が考えられます。
>「char 型の配列」を文字列として利用する場合、
>要素の先頭に「'\0'」を代入するだけでよい場合もあり得るので、
>あながち間違いとも言い切れないかと思います。

strcat()で処理することを前提としている場合、などですね。
たしかに。


この投稿にコメントする

削除パスワード

管理者用メニュー    ツリーに戻る    携帯用URL    ホームページ    ログ    タグ一覧