簡體   English   中英

在main外部的C中定義一個數組,並在main內部分配其大小

[英]Define an array in C outside main and assign its size inside 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;
}

暫無
暫無

聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM