[解決済み] C言語で構造体の配列を作るには?
質問
各構造体が天体を表す構造体の配列を作ろうとしています。
構造体を使った経験があまりないので、配列の代わりに構造体を使ってみようと思ったわけです。しかし、さまざまなエラーに何度も遭遇してしまいます。さまざまなスレッドやStackOverflowで見たテクニックを実装しようとしました(たとえば、次のようなものです)。 C 言語の構造体の配列 と C - 構造体の配列を初期化する ) が、そのすべてが適用できるわけではありませんでした。
ここまで読んでくださった方にさらに情報を。私は事前にすべてのサイズを知っている/定義しているので、このいずれかが動的である必要はありません。 また、私は定義された引数を持ついくつかの異なるメソッド(すなわちGLUTメソッド)でこれにアクセスするため、これがグローバルな配列である必要があります。
このように、ヘッダーで構造体を定義しています。
struct body
{
double p[3];//position
double v[3];//velocity
double a[3];//acceleration
double radius;
double mass;
};
構造体の内部を定義する前に定義している他のグローバル変数のリストがあるのですが、そのうちの1つがこの構造体の配列です(基本的に、私の霧の中の話しであまりはっきりしないと思いますが、下の行は上のものの上にあるのです)。
struct body bodies[n];
一応言っておきますが
n
は、私が正当に定義したものです(つまり
#define n 1
).
この配列はいくつかの異なる方法で使用しますが、最も簡単でスペースを取らないのは、私のメインの簡略化された形です。ここでは、各構造体の変数をすべて初期化し、何らかの方法で変更する前に変数を確実に設定します。
int a, b;
for(a = 0; a < n; a++)
{
for(b = 0; b < 3; b++)
{
bodies[a].p[b] = 0;
bodies[a].v[b] = 0;
bodies[a].a[b] = 0;
}
bodies[a].mass = 0;
bodies[a].radius = 1.0;
}
現在、私が直面しているエラーは
nbody.c:32:13: error: array type has incomplete element type
32行目で構造体の配列を作成しているところです。
最後に確認ですが、ヘッダーというのは
int main(void)
が、同じ
*.c
ファイルを作成します。
解決方法は?
#include<stdio.h>
#define n 3
struct body
{
double p[3];//position
double v[3];//velocity
double a[3];//acceleration
double radius;
double mass;
};
struct body bodies[n];
int main()
{
int a, b;
for(a = 0; a < n; a++)
{
for(b = 0; b < 3; b++)
{
bodies[a].p[b] = 0;
bodies[a].v[b] = 0;
bodies[a].a[b] = 0;
}
bodies[a].mass = 0;
bodies[a].radius = 1.0;
}
return 0;
}
ところで、あなたの質問はあまり明確ではなかったので、あなたのソースコードのレイアウトを上記と一致させてください。
関連
-
[解決済み】valgrind - サイズ8のブロックが割り当てられた後、アドレス ---- が0バイトになる。
-
[解決済み】変数の警告が設定されているが使用されていない
-
[解決済み] 配列から特定の項目を削除するにはどうすればよいですか?
-
[解決済み] JavaScript で配列に値が含まれているかどうかを確認するにはどうすればよいですか?
-
[解決済み] 配列からArrayListを作成する
-
[解決済み] 配列に特定のインデックスで項目を挿入する方法 (JavaScript)
-
[解決済み] オブジェクトが配列であるかどうかを確認するにはどうすればよいですか?[重複]。
-
[解決済み] 1ビットのセット、クリア、トグルはどのように行うのですか?
-
[解決済み】オブジェクトの配列を文字列のプロパティ値でソートする
-
[解決済み】配列に何かを追加する方法は?
最新
-
nginxです。[emerg] 0.0.0.0:80 への bind() に失敗しました (98: アドレスは既に使用中です)
-
htmlページでギリシャ文字を使うには
-
ピュアhtml+cssでの要素読み込み効果
-
純粋なhtml + cssで五輪を実現するサンプルコード
-
ナビゲーションバー・ドロップダウンメニューのHTML+CSSサンプルコード
-
タイピング効果を実現するピュアhtml+css
-
htmlの選択ボックスのプレースホルダー作成に関する質問
-
html css3 伸縮しない 画像表示効果
-
トップナビゲーションバーメニュー作成用HTML+CSS
-
html+css 実装 サイバーパンク風ボタン
おすすめ
-
[解決済み】「ポインタから異なるサイズの整数へのキャスト」エラーが発生するのはなぜですか?
-
[解決済み】ポインタへの代入時に互換性のないポインタ型からの初期化警告が発生した
-
[解決済み】警告。この関数ではXが初期化されていない状態で使用される可能性があります。
-
[解決済み] struct has no member named
-
[解決済み】LinuxのI_PUSHに相当するもの
-
[解決済み】「複数の定義」「最初に定義されたのはここです」エラーについて
-
[解決済み] C: エラー: ';'トークンの前に ')' があると予想される
-
[解決済み】int型配列へのポインタのスカラ・イニシャライザの過剰要素
-
[解決済み】シンプルなC言語のscanfが機能しない?重複
-
[解決済み] mallocの結果はキャストするのですか?