解釋 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
廣告