c語言基礎知識學習之陣列
首先,陣列是
同種型別
元素的集合。
一、一維陣列
1. 一維陣列定義
int a[10];
這樣我們便定義了乙個陣列a,它分配10個
int型別空間。
2. 陣列的初始化
我們可以在定義乙個陣列的同時對它進行初始化操作,例如:
int a[10] = ;
我們也可以只對陣列的部分元素進行初始化操作,例如:
int a[10] = ;
這裡我們只對陣列的前5個元素做了初始化操作,剩下其它元素的值是未知的。
如果我們對陣列的所有元素都進行了初始化操作,那麼我們甚至可以省略陣列長度不寫,編譯器可以根據初始化陣列元素的個數自動計算出陣列的長度,但是寫上總是好的,這樣也便於其他人閱讀和維護。
int a[10] = ;
3. 陣列元素的訪問
訪問陣列中的元素可以採用陣列名加下標的方式,
下標是從0開始,
c並不檢查陣列下標是否越界,所以在訪問陣列中的元素時需要注意,需要對陣列下標做判斷,防止訪問陣列越界。
int a[10];
int i;
for (i = 0;
i < 10;
i++)
二、二維陣列
1. 二維陣列定義
int a[6][10];
這樣我們便定義了乙個二維陣列,這個陣列是乙個包含60個元素的矩陣,有6行
10列。
如何去看待乙個二維陣列,可以這樣去看,先將a看成乙個一維的陣列,它有
6個元素,但是它的每個元素又是乙個包含
10個元素的陣列。
2. 二維陣列的初始化
同一維陣列一樣,可以對陣列的所有元素進行初始化同樣也可以只對陣列的部分元素進行初始化。
3.陣列元素的訪問
還是陣列名加下標的方式,不過下標有兩個下標,乙個是行下標,另乙個是列下標,其它同一維陣列沒有什麼兩樣。
下面是我對於二維陣列程式的一些實踐:
例一:二維陣列中各個表現形式的含義
#include#includeint main()
, ,
};printf("%0x %0x %0x\n",a,a+1,a+2); //a+i 訪問某(下)一行的位址
printf("%0x %0x %0x\n",a[0],a[1],a[2]);
printf("%0x %0x %0x\n",a[0]+0,a[0]+1,a[0]+2); //第幾行的第幾列
printf("%d %d %d\n",*(a[0]+0),*(a[0]+1),*(a[0]+2));//取出第一行的三個數字中的內容
return 0;
}
終端顯示結果:
61fedc 61fee8 61fef4
61fedc 61fee8 61fef4
61fedc 61fee0 61fee4
1 2 3
process exited normally.
press any key to continue . . .
分析:由上述程式可知,在二維陣列中列印出a和a[0]的效果相同,都相當於訪問陣列第一行的位址;而a[i]+i則相當於訪問第幾行第幾列的元數字址;*(a[i]+i)相當於取出第幾行第幾列的元數的內容
例二:在二維陣列中取出陣列各個元數的三種表示方法
#includeint main()
, ,,};
int i,j;
for(i = 0;i < 3;i++)
printf("\n");
}return 0;
}
終端顯示結果:
1 2 3
4 5 6
7 8 9
process exited normally.
press any key to continue . . .
分析:
由此上述程式可知,在二維陣列中引用某個陣列的方式共有三種:1.printf("%d\t",
*(*(a+i)+j)
); 2.printf("%d\t"
,*(a[i]+j));
3.printf("%d\t",
a[i][j]);
C語言基礎知識(三)(陣列)
一 雙精度輸入輸出 在使用scanf 函式輸入雙精度實型資料的時候,應當使用 lf 進行宣告 即scanf lf a 在輸出的時候可以用 f lf 或 m.nf 二 陣列定義的長度 陣列在定義的時候語法 型別符號 陣列名 常量表示式 例如 int a 20 但是如果在被呼叫的函式 不包含主函式 中定...
C語言基礎知識學習(三)
c語言基礎知識學習之程式結構 一 程式結構 程式結構 可以分為 順序 分支和迴圈 1分支結構 if else 1 if 的使用形式 如果條件為真執行語句塊1,否則跳過。if 常量 變數 表示式 2 if else 形式如果條件為真執行語句塊1,為假執行語句塊2。if 常量 變數 表示式 else 3...
C語言基礎知識學習(三)
一 程式結構 程式結構可以分為 順序 分支和迴圈 1分支結構 if else 1 if 的使用形式 如果條件為真執行語句塊1,否則跳過。if 常量 變數 表示式 2 if else形式 如果條件為真執行語句塊1,為假執行語句塊2。if 常量 變數 表示式 else 3 if else 巢狀形式 if...