C語言學習筆記之陣列(一)

2021-10-02 07:49:21 字數 1692 閱讀 6435

陣列是一組有序資料的集合,陣列依靠陣列名和下標來唯一確定陣列中的元素,陣列中的每乙個元素都屬於同一種資料型別。

在理解陣列之前回憶一下變數的定義過程,比如定義整型資料,int a; 在執行到這句話的時候,在記憶體裡分配乙個4個位元組大小的記憶體空間用來存放資料,而陣列便是開闢一段連續的空間來存放一組資料。

一維陣列就是指只需要乙個下標就能確定的陣列元素的陣列,可以理解為一串型別相同的資料排成一排。

語法:型別符 陣列名[常量表示式];

注:1、陣列名的命名規則與變數名相同。

2、在定義陣列的同時需要指定陣列中元素的個數,方括號中的常量表示式來表示元素的個數,即陣列的長度。

3、常量表示式中可以包括常量和符號常量,如int a[3+5];是合法的。不能包含變數。也就是說c語言不允許對陣列的大小作動態定義。

定義有十個整型元素的陣列:

int a[10];

a[0]

a[1]

a[2]

a[3]

a[4]

a[5]

a[6]

a[7]

a[8]

a[9]

這便是在記憶體中開闢了十個連續的四個位元組大小的記憶體用來存放整型資料,陣列的序號從0開始,所以陣列的最後乙個元素的序號是陣列長度-1,所以是沒有a[10]這個資料的。

一維陣列的賦值

1、用賦值符號來賦值,比如int a[10] = ;這裡便對陣列a所有元素進行賦值。

2、對部分元素賦值,int a[10]=;這裡對前五個元素賦值,後五個元素自動補為0。如果想要所有元素為0,可以寫為int a[10]=.

3、對全部素組賦初值時,由於資料的個數已經確定,因此可以不指定陣列長度。

例如:int a[5]=;

可以寫成

int a=;

氣泡排序

在一維陣列中有乙個很經典的問題,叫做排序問題,給定乙個亂序的陣列,將陣列裡的元素從大到小或者從小到大依次排列。排序有很多種方法,最基本的就是氣泡排序。

輸入兩行,第一行為陣列大小,第二行為陣列元素,輸出一行為從大到小排序後的陣列。

#include

const

int max =

10000

;int

main()

int j;

for(i =

0;i}for

(i =

0;i)}

執行結果:

67第一次外層迴圈,此時i為0,從第乙個開始依次與下乙個數比較,如果小於則交換,否則保持不變。比如4小於5則交換變為54

3129

67然後第二個數和第三個數比較4大於3,不變。

繼續比較第三個和第四個3大於1,不變。

繼續比較第四個和第五個1小於2,交換54

3219

67繼續比較會發先1比後面的都小,所以1會一直與下乙個數交換一直到最後。54

3296

71此時第一次外層迴圈結束,此時會發現最小的數已經到了最後一位,說明最後一位已經排序好,接下來就是排序前七位,到第二次外層迴圈時,迴圈的範圍就向前推薦一位,重複第一次的步驟,第二次迴圈結束後倒數第二位便是前七位最小的數並且比第八位大,依次往下類推,到第八次迴圈結束時,倒數第八位應該是最大的數。

c語言學習筆記之陣列(二)

如果一維陣列可以理解為乙個佇列,那麼二維陣列便是乙個矩陣,有行數有列數。二維陣列的定義和一維陣列類似 型別說明符 陣列名 常量表示式 常量表示式 比如 float a 3 4 b 5 10 定義a為3行4列的陣列,b為5行10列的陣列。所以在定義時,第乙個方括號內表示行,第二個方括號表示列。二位陣列...

C語言學習筆記之陣列(三)

定義字元陣列和數值型的陣列格式是一樣的,資料型別為char型。如char a 10 這就定義了長度為10的陣列,每個元素都存放乙個字元。對字元的初始化,最容易理解的是用 初始化列表 把各個字元一次賦給陣列中的元素。例如 char a 10 把這十個字元一次賦給a 0 a 9 如果定義字元陣列不進行初...

C語言學習之陣列

一維陣列的定義方式 資料型別 陣列名 整型常量表示式 注意 方括號中只能是常量表示式,不能使用變數。常量表示式的值表示陣列最多能存放的元素的個數,也稱為陣列的大小 陣列所佔總位元組數 sizeof 資料型別 陣列大小 int k 5 float c k 不合法,k是變數 define m 20 in...