2012-03-04

陣列元素位置的起算法(二)

我在這篇中針對 [ 陣列 ] 的元素位置與順序做一番強調 ! 關於 [ 陣列 ] 元素位置的算法, 這個觀念非常非常重要 ! 如果在觀念上誤解的話, 那麼在存取陣列裡的資料時, 將會產生難以察覺的人為錯誤. 不可不慎 !

我門以下面這兩個例題來做說明 :

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

沒有留言:

張貼留言

搜尋此網誌