[英]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.