1. 程式人生 > >全域性陣列,區域性陣列,靜態陣列的定義與初始化區別

全域性陣列,區域性陣列,靜態陣列的定義與初始化區別

測試 例項:

  1. 定義陣列,未初始化
#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; 而區域性陣列就不一樣,定義後不初始化,陣列各元素值將用隨機數值填充。