我在這篇中針對 [ 陣列 ] 的元素位置與順序做一番強調 ! 關於 [ 陣列 ] 元素位置的算法, 這個觀念非常非常重要 ! 如果在觀念上誤解的話, 那麼在存取陣列裡的資料時, 將會產生難以察覺的人為錯誤. 不可不慎 !
我門以下面這兩個例題來做說明 :
1.有一個二維陣列宣告如下,請問score[3][2]的值是多少?
int score[][3] = { {85,78,65},
{75,85,69},
{63,67,95},
{94,92,88},
{74,65,73} };
2.有一個二維陣列宣告如下,請問score[3][2]的值是多少?
int score[5][3] ={0};
這兩題可以用以下的程式碼來驗證 :
// c++ 程式碼
#include <iostream>
using namespace std;
int main()
{
int score1[][3] = { {85,78,65}, {75,85,69}, {63,67,95},
{94,92,88}, {74,65,73} };
cout << "score1[3][2] = " << score1[3][2] << endl;
int score2[5][3] ={0};
cout << "score2[3][2] = " << score2[3][2] << endl;
system("pause");
}
題 1 答案 : 88
題 2 答案 : 0
解析 :
再度強調 ! 陣列基底由 0 起算, 不是由 1 起算 !
第 1 題 score[3][2] 的內容, 第一維陣列元素為 [3], 對應到大括號內的大括號, 我用顏色來標明 { { .... }, { .... }, { ..... }, { .... }, { .... } } 其元素位置相當於 0, 1, 2, 3, 4 ; 接著, 第二維陣列元素為 [2], 則表示指向上面那個紅色 { ..... } 內容中的 { 94,92,88 }, 其元素位置相當於 0, 1, 2
第 2 題 因為 int score[5][3] ={0}; 整個陣列內容都沒有設定完全, 因此二維陣列score[3][2]的內容也是一樣沒有被指定, 所以預設初值則為 0
沒有留言:
張貼留言