陣列在C/C++裡面其實是非常常見的一種資料結構

在基本的資料型態裡面 一般初始值設定大多都是使用 loop 方式去完成

當然用loop方式去設定是可行的

這裡介紹一般書本常使用的宣告就設定其初值的方式,

同時有二點值得注意,

(1) 如果宣告的一維陣列為 a[] ={1,2,3}這種方式時
      取得 a陣列大小的方式為 int cnt = sizeof(a) / sizeof(a[0];

(2) int a[20] = {0},這種方式是將 a 陣列的所有元素值都設為0
     那如果寫成  int a[20] = {1}; 這種方式呢?
     很遺憾的是, a[0] = 1, 其它的元素都是 0
     要全都設1的話,就真的要用 loop 下去做了

以下程式碼僅供參考...

//=====================================
// FileName: ArrayPtr.cpp
// Author: Edison.Shih.

#include <iostream>
using namespace std;


int main(int argc, char *argv)
{
      size_t i=0;
      size_t cnt=0;

      // 宣告與初始方式 -a1
      int a1[10]={1,2,3};
      for(i=0; i<10; i++) cout << a1[i] << " " ;
      cout << endl;

      // 宣告與初始方式 -a2
      int a2[] = {0,1,2,3,4,5,6,7,8,9};
      cnt = sizeof(a2)/sizeof(a2[0]);
      for(i=0; i<cnt; i++) cout << a2[i] << " ";
      cout << endl;

      // 宣告與初始方式 -a3
      int a3[10] = {0};
      for(i=0; i<10; i++) cout << a3[i] << " ";
      cout << endl;

      // 以指標連結陣列 a1
      int *ptr = a1;
      for(i=0; i<10; i++) cout << *(ptr+i) << " ";
      cout << endl;

      // 將指標轉連結至陣列 a2
      ptr = a2;
      for(i=0; i<cnt; i++) cout << *(ptr+i) << " ";
      cout << endl;
     
      return 0;
}
//=====================================

而輸出結果如下...

1 2 3 0 0 0 0 0 0 0
0 1 2 3 4 5 6 7 8 9
0 0 0 0 0 0 0 0 0 0
1 2 3 0 0 0 0 0 0 0
0 1 2 3 4 5 6 7 8 9

arrow
arrow
    全站熱搜

    Edison 發表在 痞客邦 留言(1) 人氣()