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"); }
輸出結果.
高維數組則一樣,不過一般用不到高維數組.
C語言第六講,數組