掲示板利用宣言

 次のフォームをすべてチェックしてからご利用ください。

 私は

 題名と投稿者名は具体的に書きます。
 課題の丸投げはしません。
 ソースの添付は「HTML変換ツール」で字下げします。
 返信の引用は最小限にします。
 環境(OSとコンパイラ)や症状は具体的に詳しく書きます。
 返信の付いた投稿は削除しません。
 マルチポスト(多重投稿)はしません。

掲示板2

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

No.27648

配列の初期化
投稿者---はる(2006/07/17 07:48:47)


windows xp
borland c++ 5.5

int ary[] = {1, 2, 3};
はコンパイル出来るのに

int a, b, c;
int ary[] = {a, b, c};
はエラー(不正な初期化)になります。

何故、エラーになるのでしょうか?
あるいは、書き方が間違っているのでしょうか?

何方様か教えて頂けませんか。宜しくお願い致します。


この投稿にコメントする

削除パスワード

発言に関する情報 題名 投稿番号 投稿者名 投稿日時
<子記事> Re:配列の初期化 27649 ruby 2006/07/17 08:27:39
<子記事> Re:配列の初期化 27650 DD. 2006/07/17 08:30:40
<子記事> Re:ありがとうございました 27652 はる 2006/07/17 09:52:05


No.27649

Re:配列の初期化
投稿者---ruby(2006/07/17 08:27:39)


>何故、エラーになるのでしょうか?

定数式で初期化していないためです。
ary[0] = a, ary[1] = b, ary[2] = c;
のようにする必要があります。



この投稿にコメントする

削除パスワード

No.27650

Re:配列の初期化
投稿者---DD.(2006/07/17 08:30:40)


>int a, b, c;
>int ary[] = {a, b, c};
>はエラー(不正な初期化)になります。
a, b, c の値が定まっていないからです。

あらかじめ値を定めておかなくてはなりません。
まず、ary[]の前に a, b, c を初期化しましょう。


この投稿にコメントする

削除パスワード

No.27651

Re:配列の初期化
投稿者---ruby(2006/07/17 09:24:22)


>まず、ary[]の前に a, b, c を初期化しましょう。

a, b, cの値が定まっているとしても、
int ary[] = {a, b, c};
という書き方自体に問題があります。


この投稿にコメントする

削除パスワード

No.27652

Re:ありがとうございました
投稿者---はる(2006/07/17 09:52:05)


ruby様、DD様、ありがとうございました。
初期化は定数でしか出来ないもの。
変数と定数は違うもの。
初期化と代入は違うもの。
と、いうことですよね!

勉強を進めるうに混同していました。
下記の様な文を書いて分からず、質問致しました。
void fnc(int *x, int *y, int *z)
{
	/*これはダメ、初期化は定数!
	int *ary[] = {x, y, z};
	*/
	int *ary[3];
	ary[0] = x;
	ary[1] = y;
	ary[2] = z;
}
int main(void)
{
	int a, b, c;
	
	scanf("%d%d%d", &a, &b, &c);
	fnc(&a, &b, &c);
	
	return 0;
}

もう一度、最初に戻って確認してみます。

追記、40歳を目前に何を思ったか独学してます。
どうしても分からないことがありましたら、また質問させて頂きます。
よろしかったらお答え下さい。
ありがとうございました。


この投稿にコメントする

削除パスワード

No.27653

Re:ありがとうございました
投稿者---ruby(2006/07/17 10:17:10)


>	/*これはダメ、初期化は定数!
>	int *ary[] = {x, y, z};
>	*/

何となくできそうに思えるのですが、
残念ながら文法上できない、というのが実情です。

独学、がんばってください。


この投稿にコメントする

削除パスワード

No.27655

Re:ありがとうございました
投稿者---気分屋(2006/07/17 12:26:20)


>何となくできそうに思えるのですが、
>残念ながら文法上できない、というのが実情です。
VC++6.0とVS2005の場合、普通にコンパイルできるのですが
それは特別で、文法上だとできないことになっているものなのですか?


この投稿にコメントする

削除パスワード

No.27656

Re:ありがとうございました
投稿者---Hermit(2006/07/17 12:34:33)


>VC++6.0とVS2005の場合、普通にコンパイルできるのですが
>それは特別で、文法上だとできないことになっているものなのですか?
ANSI C89 あたりは文法上は駄目ってことになってますが、
ANSI C99 は、大丈夫だったと思います。

VC++6.0 や、VS2005 などは、中間あたりかな?
独自拡張というべきかも。


この投稿にコメントする

削除パスワード

No.27666

Re:ありがとうございました
投稿者---気分屋(2006/07/18 10:25:44)


>ANSI C89 あたりは文法上は駄目ってことになってますが、
>ANSI C99 は、大丈夫だったと思います。
>
>VC++6.0 や、VS2005 などは、中間あたりかな?
>独自拡張というべきかも。
なるほど。
ありがとうございました。


この投稿にコメントする

削除パスワード

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