我想在main函数外部定义一个数组,以便所有线程共享它,而不仅仅是主线程。当用户运行程序时,他的参数应该是数组的大小。我怎样才能在C中实现这个目标?
答案 0 :(得分:3)
你不能使用真正的数组。您可以使用指针执行此操作:
int *p;
int main(int argc, char *argv[])
{
size_t x;
if (argc < 2)
return;
size_t x = strtoul(argv[1], NULL, 10);
p = malloc(x * sizeof *p);
return 0;
}
答案 1 :(得分:2)
因为在声明数组时你不知道数组的长度,所以它必须是一个动态分配的数组。
(注意即使你只想访问main()中的数组也是如此,尽管许多编译器都有允许int a [n]的扩展;)
int * myarray;
int myarray_count;
int main(int argc, const char * const * argv)
{
myarray_count = atoi(argv[1]);
myarray = malloc(myarray_count * (sizeof myarray[0]));
// ...
return 0;
}
由于myarray不能是静态数组,因此sizeof myarray不会返回已分配数组的大小,因此您可能希望将计数保持在它旁边。
答案 2 :(得分:0)
int *a;
int a_c;
int main(int argc, char *argv[])
{
int i=0;
if (argc < 2)
return;
a_c= atoi(argv[1]);
a= malloc(a_c* (sizeof(int)));
// ...
for(i=0;i<a_c;i++)
{
printf("\n %d",a[i]);
}
return 0;
}