C語言的數組問題
#include?<stdio.h> int?main() { ????//第一種形式 ????int?arrFirst[3]?=?{1,2,3}; ????//第二種形式 ????int?arrSecond[1]?=?{1,2,3}; ????//第三種形式 ????int?arrThird[3]; ????//給arrThird數組每個元素初始化 ????arrThird[0]=1; ????arrThird[1]=2; ????arrThird[2]=3; ????//輸出第一個數組中的第二個元素 ????printf("%d\n",arrFirst[1]); ????//輸出第二個數組中的第二個元素 ????printf("%d\n",arrSecond[2]); ????//輸出第三個數組中的第二個元素 ????printf("%d\n",?arrThird[3]); ????return?0; } 輸出的結果為什么會是 2 4195392 0
2016-10-24
因為數組的下標均以0開始,所以arrThidr[1]代表第2個元素,輸出2;
數組在初始化的時候,數組內元素的個數必須不能大于聲明的數組長度,而第二種形式卻恰恰相反,導致出現錯誤代碼;
數組的下標均以0開始,arrThidr[3]代表第4個元素,超出范圍,用0代替。
2016-05-07
arrFirst[1]指arrFirst數組的第二個數,{1,2,3}也就是劃線的這個數;
arrSecond[2]是arrSecond數組的首地址+2的地址所在內存位置存儲的數據,因為arrSecond定義的長度不對(比實際?。?,所以訪問這個數據是內存中改位置已經保存的數值,這個結果是不確定的,跟著這個位置存儲的數值變化而變化;
arrThird[3]這個數組項沒有初始化,所以被默認賦為0。