全域性陣列,區域性陣列,靜態陣列的定義與初始化區別
阿新 • • 發佈:2018-12-17
測試 例項:
- 定義陣列,未初始化
#define LEN1 5 static int array_static_glogal[LEN1];//定義靜態全域性陣列,未初始化陣列成員 int array_glogal[LEN1]; //定義全域性陣列,但未初始化陣列成員 int main() { char key = 6; switch(key) { case 6: { int i = 0; int array2[LEN1]; //定義區域性陣列,但未初始化陣列成員 int static static_array3[LEN1]; //定義靜態區域性陣列,未初始化陣列成員 printf("\n location array2 : "); for(i=0;i<(sizeof(array2)/sizeof(array2[0])); i++) { printf("%d ", array2[i]); } printf("\n location static array3:"); for(i=0; i<(sizeof(static_array3)/sizeof(static_array3[0])); i++) { printf("%d ", static_array3[i]); } printf("\n glogal static array: "); for(i=0; i < sizeof(array_static_glogal)/sizeof(array_static_glogal[0]); i++) { printf("%d ", array_static_glogal[i]); } printf("\n glogal array: "); for(i = 0; i < LEN1; i++) { printf("%d ", array_glogal[i]); } printf("\n"); }
編譯完成後,可看到,靜態全域性陣列和全域性陣列定義後,雖未初始化,但編譯器預設用數值0填充; 靜態區域性陣列定義後,未初始化,結果也是自動填充0; 而區域性陣列就不一樣,定義後不初始化,陣列各元素值將用隨機數值填充。