所以我想要一个最初不知道大小的数组(从命令行从用户那里获取),但我想让它全局可访问(在 main 之外)。
所以这就是我所做的:
//.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();
我有两个问题:
- 这种尝试使用添加指针构造数组的形式是否有效?尽管地址在技术上应该是有效的,但我在第一次运行时遇到了段错误。
- 从结构访问数组成员的方式是否有效?(有点确定,但只是想确定一下)?
PS 我知道 malloc 并且可以使用 malloc 实现相同的目标,但我想知道这是否是给我带来问题的原因,然后再更改代码中的其他任何地方,如果是,为什么?