我想在main函数之外定义一个数组,以便它被所有线程共享,而不仅仅是主线程。当用户运行程序时,他的参数应该是数组的大小。我如何在C中实现这一点?
你不能用一个真正的数组。你可以用指针来做:
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;
}
因为在声明数组时不知道它的长度,所以它必须是一个动态分配的数组。
(请注意,即使您只想访问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将不会返回分配的数组的大小,所以您可能希望在它旁边保留计数。
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;
}