陣列 多維陣列本質和字元陣列語法

2021-10-10 17:48:40 字數 1358 閱讀 9618

初學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中陣列元素可以是任意型別 索引陣列 鍵 值 鍵為數字 在陣列中,鍵不能相同,值可以相同 關聯陣列 鍵 值 鍵為字串,或字串與數字混合 鍵不能相同 索引陣列 關聯陣列...