初學c語言,記錄一下學習過程。
引入陣列的原因:* 要宣告很多變數* 程式冗長* 可擴充套件性差*
陣列必須先定義,後使用;
只能逐個引用陣列元素,不能一次引用整個陣列;
int a[5]
;
a[4]
=10;
可以沒初始化陣列就對其中的乙個元素賦值;但不能a[5]=10,這樣就越界了。
******排序的應用例項(待補充)
多維陣列本質是一維陣列的原因是記憶體是一維的。
任意維度陣列最左邊的是元素的個數【對於多維陣列,元素並不是不可以分割的,每乙個元素又是乙個一維陣列】
###多維陣列類似於把集合分成好幾個大類,再在大類的基礎下分成好幾個小類,有幾維就說明有幾層。
對於二維陣列而言:行序優先,意味著行是最外層的分類。
將多維陣列對映到一維上來,類似於完全展開最小的一層分類,即集合裡的全部展開,然後將幾個小部分一層一層的擴起來。
int a[m][n];二維陣列的本質是包含m個「元素」一維陣列,其中的「元素」包含n個一維陣列,因此二維陣列就是包含一維陣列的一維陣列。
int a[2][3]=,}; int a[2][3]=;
(二維陣列的初始化可以省略第一維的數字,但是不能省略第二維的數字)
二重for迴圈完美代表二維陣列,外層for迴圈對映行,內層for迴圈對映列
(初始化應該=0賦值,因為不能確定第乙個是否為最大值,若是,則不繼續賦值)max選擇需要賦初始值
字元陣列和字串
字元陣列是儲存字元型別多個字元型別的結合,字串是有多個字元組成的集合,
字元陣列的初始化
逐個字元的賦值
**char ch[5]=;
『a』代表字元,「ab」代表字串。
整體字串
char ch[6]=;
char ch[6]=「hello」;
char ch=「hello」;
作為「abc」輸入時,系統認定他為乙個字串所以自動加了乙個』\0』,所以說應該在定義陣列的時候留下位置
而作為『a』輸入時,系統沒有把它作為乙個字串,故不用預留『\0』的位置。
乙個字串的長度是不固定的,所以應該有結束符來告知系統他的長度。
二維陣列表示多個字串,長度不一樣,所以的最後乙個長度要是最長的乙個+1————但是容易造成記憶體浪費:表示多個字串,除了二維陣列之外可以用多個字元指標,在陣列裡面存指標;
陣列型別和多維陣列本質
1 元素型別角度 陣列是相同型別的變數的有序集合 測試指標變數占有記憶體空間大小 2 記憶體角度 聯絡的一大片記憶體空間 陣列初始化 陣列元素的個數可以顯示或隱式指定,分析陣列初始化與memset比較。與memset 耗時差不多,但 可能有移植性問題,雖然絕大多數編譯器看到 都是將陣列全部初始化為0...
多維陣列本質小結
include stdio.h include stdlib.h include string.h void main33 1 myarray陣列首元素的位址吧 2 myarray是乙個常量指標 3k 3 myarray是乙個陣列指標 int myarray 3 5 直接定義乙個陣列指標 int p...
陣列和多維陣列
索引陣列 帶有數字索引的陣列 關聯陣列 帶有指定鍵的陣列 多維陣列 包含乙個或多個陣列的陣列 陣列中的每個元素都包含兩項 鍵和值 php中陣列元素可以是任意型別 索引陣列 鍵 值 鍵為數字 在陣列中,鍵不能相同,值可以相同 關聯陣列 鍵 值 鍵為字串,或字串與數字混合 鍵不能相同 索引陣列 關聯陣列...