配列宣言時の要素数の指定について
Posted: 2009年8月18日(火) 00:07
毎度お世話になっております、山崎です。
今回は、配列を宣言した時の要素数や、関数の引数に配列を渡すときなどについて質問に参りました。
XPでVisual Stadio2008を使っております。
現在、他人からもらったC言語のプログラムを読み解いています(ゲームとは関係ないのですが)。
その人が言うにはちゃんと動くらしいのですが、私のパソコンでビルドしてもエラーが発生します。
もらったのは.cppではなく.cのファイルをひとつです。
コードを見ると、不思議な配列の宣言のやり方をしていて、私にはどうも理解できません。
その人が作ったプログラムをそのままここにコードを貼る訳には行かないので全てはコピーペーストできませんが、
エラーの起きている行をいくつか挙げてみます。
void func(int a, int pal1[a],float pal2[a],float pal3[a]);
これは関数プロトタイプで、ファイルの最後にこの関数の動作の定義があります。
もちろんaは定数ではありません、この行で初登場です。
引数として配列を渡しているように見えますが、[/url]内に変数を持ってきて、そんな配列を引数にできるんでしょうか?
「定数式が必要」「サイズが0の配列を割り当てまたは宣言しようとしました」というエラーが出ます。
int Val1[CONST][count+1][5];
CONSTは定数で既に数値として定義されています。countはint型の変数として事前に宣言されています。
int型の3次元配列を宣言しているように見えますが、宣言時には[/url]内には変数は持ってこれないのでは?
と首を傾げています。
「定数式が必要」「サイズが0の配列を割り当てまたは宣言しようとしました」「添え字がありません」
といったエラーが出ます。
int Val2[(x+1)*(x+1)*CONST][5];
CONSTは定数で既に数値として定義されています。xはint型の変数として事前に宣言されています。
これはint型の2次元配列を宣言しようとしているように見えるのですが、
これも[/url]内に数式があります。こんなことはできましたっけか…。
「サイズが不明」というエラーが出ています。
なにぶん他人の作ったプログラムなのでそのまま載せられず、前後関係がつかめずわかりにくいとは思いますが…。
これらの行でエラーになるのは当然なのではないだろうかと思うのですが、
これらのコードでもちゃんと実行できることがあるのでしょうか?
VisualStadio以外の特殊な環境や特殊なコンパイラを使えば実行できる、など…。
今回は、配列を宣言した時の要素数や、関数の引数に配列を渡すときなどについて質問に参りました。
XPでVisual Stadio2008を使っております。
現在、他人からもらったC言語のプログラムを読み解いています(ゲームとは関係ないのですが)。
その人が言うにはちゃんと動くらしいのですが、私のパソコンでビルドしてもエラーが発生します。
もらったのは.cppではなく.cのファイルをひとつです。
コードを見ると、不思議な配列の宣言のやり方をしていて、私にはどうも理解できません。
その人が作ったプログラムをそのままここにコードを貼る訳には行かないので全てはコピーペーストできませんが、
エラーの起きている行をいくつか挙げてみます。
void func(int a, int pal1[a],float pal2[a],float pal3[a]);
これは関数プロトタイプで、ファイルの最後にこの関数の動作の定義があります。
もちろんaは定数ではありません、この行で初登場です。
引数として配列を渡しているように見えますが、[/url]内に変数を持ってきて、そんな配列を引数にできるんでしょうか?
「定数式が必要」「サイズが0の配列を割り当てまたは宣言しようとしました」というエラーが出ます。
int Val1[CONST][count+1][5];
CONSTは定数で既に数値として定義されています。countはint型の変数として事前に宣言されています。
int型の3次元配列を宣言しているように見えますが、宣言時には[/url]内には変数は持ってこれないのでは?
と首を傾げています。
「定数式が必要」「サイズが0の配列を割り当てまたは宣言しようとしました」「添え字がありません」
といったエラーが出ます。
int Val2[(x+1)*(x+1)*CONST][5];
CONSTは定数で既に数値として定義されています。xはint型の変数として事前に宣言されています。
これはint型の2次元配列を宣言しようとしているように見えるのですが、
これも[/url]内に数式があります。こんなことはできましたっけか…。
「サイズが不明」というエラーが出ています。
なにぶん他人の作ったプログラムなのでそのまま載せられず、前後関係がつかめずわかりにくいとは思いますが…。
これらの行でエラーになるのは当然なのではないだろうかと思うのですが、
これらのコードでもちゃんと実行できることがあるのでしょうか?
VisualStadio以外の特殊な環境や特殊なコンパイラを使えば実行できる、など…。