解釋 C 語言中未初始化陣列訪問的概念


問題

如果使用未初始化陣列,C 語言程式會執行嗎?

解決方案

  • 如果使用未初始化陣列,編譯器不會生成任何編譯和執行錯誤。

  • 如果一個數組未初始化,您可能會得到不可預測的結果。

  • 所以,我們應該始終用預設值初始化陣列元素。

示例程式

下面是有關訪問未初始化陣列的 C 程式 -

 即時演示

#include <stdio.h>
int main(void){
   int a[4];
   int b[4] = {1};
   int c[4] = {1,2,3,4};
   int i; //for loop counter
   //printing all alements of all arrays
   printf("
Array a:
");    for( i=0; i<4; i++ )       printf("arr[%d]: %d
",i,a[i]);    printf("
Array b:
");    for( i=0; i<4; i++)       printf("arr[%d]: %d
",i,b[i]);    printf("
Array c:
");    for( i=0; i<4; i++ )       printf("arr[%d]: %d
",i, c[i]);    return 0; }

輸出

當執行以上程式時,會產生以下結果 -

Array a:
arr[0]: 4195872
arr[1]: 0
arr[2]: 4195408
arr[3]: 0

Array b:
arr[0]: 1
arr[1]: 0
arr[2]: 0
arr[3]: 0

Array c:
arr[0]: 1
arr[1]: 2
arr[2]: 3
arr[3]: 4

注意

如果我們沒有初始化陣列,預設情況下,它會輸出垃圾值,並且從不會顯示錯誤。

看看另一段有關訪問未初始化陣列的 C 程式 -

示例

 即時演示

#include <stdio.h>
int main(void){
   int A[4];
   int B[4] ;
   int C[4] = {1,2};
   int i; //for loop counter
   //printing all alements of all arrays
   printf("
Array a:
");    for( i=0; i<4; i++ )       printf("arr[%d]: %d
",i,A[i]);    printf("
Array b:
");    for( i=0; i<4; i++)       printf("arr[%d]: %d
",i,B[i]);    printf("
Array c:
");    for( i=0; i<4; i++ )       printf("arr[%d]: %d
",i, C[i]);    return 0; }

輸出

當執行以上程式時,會產生以下結果 -

Array a:
arr[0]: 4195856
arr[1]: 0
arr[2]: 4195408
arr[3]: 0

Array b:
arr[0]: -915120393
arr[1]: 32767
arr[2]: 0
arr[3]: 0

Array c:
arr[0]: 1
arr[1]: 2
arr[2]: 0
arr[3]: 0

更新於: 09-3-2021

937 次瀏覽

開啟您的 職業生涯

透過完成課程獲得認證

開始
廣告