const的功能和二維數組

看到一個const,其初始目的:取代預編譯指令,即預處理,揚長避短。

具體作用:

  1. 定義const常量,具有不可變性。
  2. 防止對程序的意外修改。如:void f(const int i) { i=10;//error! } 
  3. 節省空間,節省內存。
  4. 提高效率。
  5. 便於類型檢查,使編譯器對處理內容有更多瞭解,消除了一些隱患。
  6. 可以避免意義模糊的數字出現,同樣可以很方便地進行參數的調整和修改。 同宏定義一樣,可以做到不變則已,一變都變。

10月31日筆記,萬聖節快樂!

二維數組,舉個例子(來自《C Prime Plus(第五版)中文版》第252頁:

const float rain[YEARS][MONTHS] =
    {
        {4.3,4.3,4.3,3.0,2.0,1.2,0.2,0.2,0.4,2.4,3.5,6.6},
        {8.5,8.2,1.2,1.6,2.4,0.0,5.2,0.9,0.3,0.9,1.4,7.3},
        {9.1,8.5,6.7,4.3,2.1,0.8,0.2,0.2,1.1,2.3,6.1,8.4},
        {7.2,9.9,8.4,3.3,1.2,0.8,0.4,0.0,0.6,1.7,4.3,6.2},
        {7.6,5.6,3.8,2.8,3.8,0.2,0.0,0.0,0.0,1.3,2.6,5.2}
    };

這個初始化使用了5個數值列表,沒個數值列表都用花括號括起來。第一個列表被賦給數組的第一行,第二個列表被賦給數組的第二行,依次進行賦值。如果第一個列表中有10個數值,則第一行只有前10個元素得到賦值,最後2個元素被默認初始化爲0。如果列表中的數值多餘12個,則報告錯誤;而且這些數值不會影響到下一行的賦值。

初始化時候也可以省略內部的花括號,只保留最外面的一對花括號。只要保證數值的個數正確,初始化效果就是一樣的。如果數值的個數不夠,那麼在數組初始化時候,按照先後順序來逐行賦值,因此前面的元素首先得到賦值,直到沒有數值爲止。後面沒有賦值的元素被初始化爲0。如下:

//新方法
int sq[2][3]={
   {5,6},
   {7,8}
};

//老方法
itn sq[2][3]={5,6,7,8};

推薦使用新方法,方便對代碼進行閱讀理解和檢查。

更多維數的數組

前面關於二維數組的討論對於三維乃至更多維數的數組同樣適用。可以用如下方式聲明三維數組:

int box[10][20][30];

可以這樣直觀的理解:一對數組是排成一行的數據,二維數組是放在一個平面上的數組,三維數是把平面數據一層一層的壘起來。另一種理解是認爲它是數組的數組的數組。

通常處理三維數組時候需要3重嵌套循環,處理思維數組需要4重嵌套循環,對於其他多維數組,以此類推。

發表評論
所有評論
還沒有人評論,想成為第一個評論的人麼? 請在上方評論欄輸入並且點擊發布.
相關文章