2
A
回答
4
聲明一個指向int的指針作爲全局變量並使用malloc初始化它在main中。
/* outside any function, so it's a global variable: */
int *array;
size_t array_size;
/* inside main(): */
array_size = user_defined_size;
array = malloc(sizeof(int)*array_size);
if (array == NULL) {
/* exit - memory allocation failed. */
}
/* do stuff with array */
free(array);
如果需要從另一模塊(源文件)訪問全局變量,有或聲明它再次使用
extern int *array;
extern size_t array_size;
,優選地,在頭文件中聲明他們extern
包括在任何來源使用該數組的文件,包括其定義的來源(以確保類型一致性)。
+1
頭文件應該用於定義指針('array')的文件以及使用該數組的源文件中。這可確保(或確保儘可能做到最多)數組的定義和用途及其大小保持一致。 –
相關問題
- 1. 用C共享全局變量typedef定義重新聲明
- 2. 聲明全局變量
- 3. 全局變量聲明
- 4. 聲明和使用全局數組c#
- 5. 局部變量的聲明和定義
- 6. C#用戶定義的數組大小
- 7. 如何在C中聲明一個可變大小的數組?
- 8. 聲明一個非恆定大小變量的數組
- 9. C++中的數組聲明,大小定義和破壞
- 10. 可變大小的C++全局數組隊列
- 11. Eclipse:未明確聲明全局變量
- 12. 無法用TypeScript聲明全局變量
- 13. 用非常量變量聲明數組大小
- 14. 分配數組大小與外部全局變量C++
- 15. C&C++缺省全局變量聯動,多個聲明&定義問題
- 16. Python全局變量未定義 - 在類內聲明
- 17. 聲明一個全局的Request.ServerVariable變量
- 18. proc聲明中的Tcl全局變量
- 19. 全局變量在android中的聲明
- 20. 聲明Button1_Click中的全局變量
- 21. Qt中的全局變量聲明
- 22. 聲明Yii中的全局數組變量
- 23. 如何使用其他局部變量聲明局部變量?
- 24. 使用C中聲明的全局變量,Arm裝配
- 25. 如何聲明全局變量其中僅使用在PROC
- 26. 在項目中聲明全局變量並將其用於xslt
- 27. 聲明vs定義成員變量C++
- 28. 如何聲明的NSString * C風格的數組作爲全局變量
- 29. 聲明中的Java小腳本的全局變量
- 30. 在Arduino中聲明全局變量
使用全局變量通常不是一個好的解決方案,爲什麼不將數組和它的大小從其他模塊傳遞給函數? – chqrlie
形式上,你不能那樣做。全局數組的大小在編譯時固定。您可以通過使用全局指針並在任何代碼使用它之前分配正確的空間來實現等效效果。但避免使用全局變量通常是個好主意。它並不總是一個好主意:'stdin','stdout'和'stderr'是全局變量,如果它們不是一個混淆的滋擾。 OTOH,'errno'是全球性的,並且設法解決問題,儘管標準已經部分抵消了其中的最壞情況。 –