在main之外用C语言定义一个数组,并在main内部赋值它的大小



我想在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;
}

最新更新