C语言第六讲,数组
C語言第六講,數組
一丶什么是數組
數組,就是一整塊的連續內存空間.
且類型都是一樣的.大小一樣
比如:
1.1數組元素的訪問
我們要訪問數組,例如上面,我們訪問元算2,元素3等等怎么訪問..
比如有一個數組為:
int Arry[3] = {1,2,3}; //數組定義初始化. Arry[0] = 1; Arry[1] = 2; //數組的訪問 ......
利用下標來進行訪問.
利用程序來進行訪問
int Ary[10] = { 0 };for (int i = 0; i < 10; i++){printf("%d\r\n",i);}動態的大小識別.
int Ary[10] = { 0 };for (int i = 0; i < sizeof(Ary)/sizeof(Ary[0]); i++){printf("%d\r\n",i);}這里用到了一個關鍵字,Sizeof,?sizeof關鍵字是求大小的關鍵字.?例如我們求數組的總大小.?然后?利用總大小?除以數組元素個數的大小.?就得出來了數組的個數.
1.2一維數組的聲明
在C語言中,或者C++語言中,我們要聲明數組.?不用考慮在哪里開辟,開辟多大的問題,只需要你給我一個大小.我編譯器自動的來進行開辟內存空間供你使用.
類型 數組名[數組元素的個數] 例如:int Ary[3]; //定義一個Ary的數組,有3個元素.注意,聲明的時候是個數.也就是說數組有3個元素.? 但是訪問的時候是下表.從0開始訪問
例如:
ary[0] = 1; ary[1] = 2; ary[2] = 3;總共有三個.
聲明的時候則是告訴編譯器,?我聲明的類型是?int類型,數組名字數Ary,個數是3個.?那么這個數組所占的內存空間則是? 3 * 4 = 12個字節大小.
公式計算:
3(數組元素個數) *?類型? =?內存空間所占大小.
1.3數組應該注意的問題.
在C語言中,數組的聲明不支持動態聲明.
什么意思?
也就是說,你需要給定我個數.我來進行申請.但是你不能把這個個數給一個變量保存.讓我跟隨變量來申請.
例如:
int nCount = 10; int Ary[nCount]; //錯誤的
?
數組的定義可以和普通成員變量的定義放在一起.
例如:
int A, ary[5],b;
?
二丶數組初始化
上面我們雖然定義了數組.但是并沒有仔細講解數組的初始化
數組的初始化常用的有三種.
第一種,?大括號初始化.
int Ary[3] = { 1, 2 ,3}; //數組中的元素1,元素2,元素三分別初始化為了1,2,3第二種.全部初始化.
int Ary[3] = {0}; //數組的每個元素全部初始化為了0第三種,不確定個數的初始化.
int Ary[] = { 1, 2, 3} ;//有的時候你并不知道你的數組有多大. 但是又不用動態的申請空間. 所以這樣寫會默認有3個元素.?三丶二維數組和高維數組
有的時候一維數組并不能滿足我們的需求.
這個是否就需要更高維的數組了.
例如:
int Ary[2][2]; 定義二維數組
這樣則聲明了一個二維數組.?代表我們申請了 2行 2列的數組.?大小是 2*2的矩陣.??
這幾個元素分別是:
Ary[0][0] Ary[0][1] Ary[1][0] Ary[1][1]
二維數組的定義初始化.
int nNum[2][2] = {{0,1},{2,3}}; 使用兩個括號即可.二維數組對部分元素進行初始化.
int nNum[2][2] = {{1},{0}};二維數組的訪問
二維數組本質是一維數組.但是為了理解.所以說成是二維數組.
我們利用程序來對其進行訪問.
二維數組初始化int Ary[3][4] = {0};for (int i = 0; i < 3; i++){for (int j = 0; j < 4; j++){Ary[i][j] = i + j; //重要語句. i是行,j是列}} 二維數組輸出for (int i = 0; i < 3; i++ ){for (int j = 0; j < 4; j++){printf(" %d", Ary[i][j]);}puts("\r\n");}輸出結果.
?
高維數組則一樣,不過一般用不到高維數組.
?
轉載于:https://www.cnblogs.com/iBinary/p/8472606.html
總結
- 上一篇: P1908 逆序对
- 下一篇: C语言string.h常用函数总结