C語言中的陣列

2021-08-18 20:07:12 字數 1774 閱讀 7674

一維陣列:

(1)陣列名

宣告:int a ; 

int b[10]

a b[10] 為陣列,它是一些值的集合。下標和陣列名一起使用,用於標識該集合中的某個特定的值。對於b來說,只有在兩種情況下,陣列名僅代表整個陣列,a 陣列名作為sizeof操作符的運算元;b 陣列名作為 & 的運算元:除此之外,陣列名代表陣列首元素的位址。

(2)下標引用

int arr[10];

int *ap=arr+2;

即 指標ap指向arr[2],陣列名的值是乙個指標常量。

注意: a *ap即 arr[2],也可寫作 * (arrr+2);

b ap[0]  c的下表引用和間接訪問表示式是一樣的,等同於 *(ap+0);

c *ap +6 先執行間接訪問,再執行加號,即arr[2]+6;

.                                   d ap[-1] ap指向第3個元素,使用偏移量為-1使前移乙個元素,即arr[1].

e ap[9] 它對等的表示式是arr[11],但陣列只有10個元素,所以指向的位置超過陣列的右邊界,所以該

語句非法,但很少有編譯器檢測到錯誤,而它將訪問(如果為左值,將修改)某個任意變數的值。

f c實現下標的方法為 如:2[arr]等效於*(2=arr),也就等效於arr[2]。

(3)指標與下標

a  假定指標與下標都正確,下標絕對不會畢指標更有效率,但指標有時會比下標更有效率(當在陣列中1次1步(或者某個固定的數字)地移動時,與固定數字相乘的運算在編譯時完成,執行時所需的指令就少一些)。

b 宣告為暫存器變數的指標通常比位於靜態記憶體和堆疊中的指標效率更高。

(4)作為函式引數的陣列名

a  當乙個陣列名作為引數傳遞給乙個函式時,傳遞給函式的是乙份該指標的拷貝,函式如果執行了下標引用,即對這個指標執行間接訪問操作,並且通過這種間接訪問,函式可以訪問和修改呼叫程式的陣列。

b c關於引數傳遞:所有傳遞給函式的引數都是通過傳值方式進行的。傳遞給函式的是引數的乙份臨時拷貝(指向陣列起始位置的指標的拷貝),所以函式可以自由的操作它的指標形參。

(5) 宣告陣列引數

a 把乙個陣列名引數傳遞給函式,函式形參宣告為指標更加準確。但編譯器也接受陣列。

(6) 初始化

a 儲存於靜態記憶體的陣列只初始化一次。在程式開始執行之前,鏈結器對陣列元素進行初始化,如果陣列為被初始化,陣列元素的初始值會自動設定為0。

b 自動變數在預設情況下是未初始化的,如果宣告中給了初始值,每次執行進入其作用域時,變數都將被隱式的賦值語句初始化,而這將花費時間和空間

二維陣列

(1) 儲存順序

a 在c中多維陣列的元素儲存順序按照最右邊的下標率先變化的原則,稱為行主序,即按行儲存。

(2) 陣列名

a 多維陣列的陣列名指向陣列的第1維的元素,即該陣列的子陣列。 如:int matrix[3] [10]中matrix的值是指向乙個包含10個整形元素的陣列的指標。

(3)作為函式引數的多維陣列

a 矩陣:int matrix[3][10]

func2(matrix);

則函式原型應為: void func2(int (*mat)[10]);

void func2(int mat [ ][10]); 中的一種。對於多維陣列來說,函式原型寫為指標的形式的只有第一維的陣列元素。

(4)初始化

a 初始化多維陣列時,陣列元素的儲存順序非常重要。

頗有不足!以後會更加完善!

C語言中的陣列

c語言陣列 一 陣列的概念 用來儲存一組資料的構造資料型別 特點 只能存放一種型別的資料,如全部是int型或者全部是char型,陣列裡的資料成為元素。二 陣列的定義 格式 型別 陣列名 元素個數 舉例 儲存5個人的年齡 int agrs 5 在記憶體中開闢4x5 20個位元組的儲存空間 可以在定義陣...

C語言中的陣列

include stdio.h include string.h include stdlib.h int main 定義乙個可以存放十個int型資料的陣列 int parr null parr array array a printf d n array printf d n array 1 pr...

C語言中的陣列

把一組型別相同的資料的集合稱為陣列 array 它所包含的每乙個資料叫做陣列元素 element 所包含的資料的個數稱為陣列長度 length 陣列中的每個元素都有乙個序號稱為下標 index 下標從0開始。定義格式 datatype arrayname length datatype 為資料型別,...