したがって、最初はサイズが不明な配列(コマンドラインからユーザーから取得する)が必要ですが、グローバルにアクセスできる(メイン外)必要があります。
だからここに私がすることがあります:
//.h file declaration
typedef struct res
{
int popultaion[NB_TYPE];
int alive;
int birthat[NB_TYPE];
}res_t;
//.c file
res_t* res_first = NULL;
int main(int argc, char* argv[])
{
int no_of_mutants = atoi(argv[1]);
int i,j = 0;
srand(time()NULL);
res_t* tem= res_first;
for(i = 0; i < no_of_mutants; i++)
{
for(j = 0; i < NB_TYPE; i++)
{
tem->popultaion[j] = rand();
}
tem++
}
//...other code
}
セグメンテーション エラーが発生します。gdb を使用してデバッグすると、ここにあるように見え、SIGSEGV を取得します。
tem->popultaion[j] = rand();
2 つの質問があります。
- ポインターの追加を使用して配列を構築しようとするこの形式は有効ですか? アドレスが技術的に有効である必要がある場合でも、最初の実行でセグメンテーション違反が発生します。
- 構造体から配列メンバーにアクセスする方法は有効ですか? (確かにそうですが、確認したいだけです)?
PS私はmallocを認識しており、mallocを使用して同じことを達成できましたが、コードの他の場所を変更する前にこれが問題を引き起こしているかどうかを知りたいのですが、そうであればなぜですか?