我想在main函數之外定義一個數組,以便它不僅被所有線程共享,而且還被主線程共享。當用戶運行程序時,他的參數應該是數組的大小。我如何在C中實現這一點?在main中定義一個數組,並在main的內部指定它的大小
1
A
回答
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;
}
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中可以」 t是一個靜態數組,sizeof myarray不會返回分配數組的大小,所以你可能想保持它的計數。
+2
只是一個附註,'int a [n];'在函數範圍內不是擴展名。它被稱爲「可變長度陣列」,是自1999年以來C標準的組成部分。 –
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;
}
相關問題
- 1. 定義的main()在python
- 2. 爲什麼在main中定義一個方法在Object和main.singleton_class中定義它?
- 3. 通過函數指針定義「main」
- 4. C++ - 在main()函數內部定義變量時遇到問題
- 5. Java - 在另一個類的Main中定義的使用類
- 6. 當main存在時未定義對`main'的引用
- 7. 在JSF中指定RequireJS「data-main」屬性
- 8. 未定義的符號:.main
- 9. 在最小的C程序中未定義對「main」的引用
- 10. 'sourceSets'的'main'方法在哪裏定義?
- 11. 在main()中定義全局變量
- 12. main的多重定義,首先在devC++中定義這裏
- 13. 「main」的這個定義合法嗎?
- 14. 在main()或main()內部聲明結構的地方?
- 15. 在C中定義無參數函數main()的標準方法
- 16. 通過模板定義main()
- 17. 重新定義int main()C++
- 18. HOWTO:在app.config中指定在調用Main()之前調用一個函數?
- 19. class Main在一個包中?
- 20. 在執行過程中定義一個數組的大小C
- 21. 創建一個固定大小的數組並初始化它
- 22. Haskell函數'main'沒有定義?
- 23. 在C++中定義數組大小
- 24. 在WPF中獲取對自定義main()中的MainWindow的引用
- 25. 如何在JavaScript中定義對象內的數組大小?
- 26. 在java中的main()參數
- 27. 未定義的子程序和main :: promt
- 28. 在main,malloc中聲明動態數組並初始化,在main中打印數組
- 29. 編譯器錯誤E2451未定義的符號在函數main()
- 30. 我可以在一個循環內定義一個數組,它的大小每次迭代都不一樣
+1不錯!我怎樣才能訪問它的元素?它是否像'p [0] p [1] ... p [n]'? –
@ Eng.Fouad就是這樣。在大多數情況下,您可以像使用數組一樣使用它。但請記住** [它不是數組](http://c-faq.com/aryptr/aryptr2.html)**。 – cnicutar