元小白(猿小白)高階日記 七(陣列)

2021-09-16 21:19:01 字數 3325 閱讀 1857

陣列是一類相同元素的集合。

一、一維陣列

1、陣列的建立

type_t arr_name [const_n];

//type_t 是指數組的元素型別

//const_n 是乙個常量表示式,用來指定陣列的大小,即元素個數

例如:int arr1[10];

char arr2[30];

float arr3[33];

2、陣列的初始化

陣列的初始化是指在建立陣列同時給陣列內容一些合理初始值

int x=10;//初始化

int x; x=10;//賦值

定義變數步驟:開闢空間和放入初始值,同時進行,叫初始化,分開完成叫賦值

例如:

int  a[10]=;//給a[0],a[1],a[2]按順序初始化,其他的未初始化的系統預設為0;

int b=;//沒有指定陣列大小,系統會根據初始化中的元素個數來定,此陣列有4個元素

char c[3]=;//此陣列為char型,則元素98代表的是ascll碼表中的字元『b』.

char d1=;//陣列大小為3

char d2=;//陣列大小為4;

char e="abc"//陣列大小為4,因為字串自帶『\0』,

注:int a[10]=; a=;這兩句語句不能實現。

陣列在建立時如果不想指定陣列的大小,就必須初始化,

3、一維陣列的使用

陣列的 [ ] 下標引用操作符,就是陣列訪問的操作符

例如:

求陣列的大小

陣列是使用下標訪問的,下標從0開始

#define _crt_secure_no_warnings 1

#includeint main()

;//不完全初始化

int len = sizeof(arr) / sizeof(arr[0]);//求陣列元素個數。在哪兒建立的陣列在哪兒求大小。

//int 型---4個位元組----10個元素共40個位元組----40/4=10個元素

int i = 0;

for (i = 0; i < len; i++)

for (i = 0; i < len; i++)

printf("%d",len);

return 0;

}

輸出陣列的位址

陣列的位址是一次性分配的,由低位址到高位址的分配且連續。

int arr[10]=;中arr代表陣列arr的首位址,也就是arr[0]的位址。

#define _crt_secure_no_warnings 1

#includeint main()

; int len = sizeof(arr) / sizeof(arr[0]);

int i = 0;

for (i = 0; i < len; i++)

二、二維陣列

可以將二維陣列看作是由一維陣列構成

可以將n維陣列看作是由多個(n-1)維陣列構成

例如:int arr[3][4]=,,};

1、二維陣列的建立

資料型別  陣列名  [  常量1][常量2]

例如:int arr1[10][10]=;

char arr2[ ][10]=;

2、陣列的初始化

例如:

int arr1[3][4]=;//意味著1 2 3 4   0 0 0 0    0 0 0 0

int arr2[3][4]=,};//意味著1 2 0 0 3 4 0 0 0 0 0 0

int arr3[ ][5]=,};//意味著2 3 0 0 4 5 0 0 ,二維陣列最多可以不填第乙個[ ]的內容,多維陣列也是這樣,其他的[ ]都不可空著,

int row=sizeof(arr1)/sizeof(arr1[0]);//計算的是行數;

3、二維陣列的使用

輸出陣列及其位址

#define _crt_secure_no_warnings 1

#includeint main()

; int i = 0;

for (i = 0; i < 3; i++) }

for (i = 0; i < 3; i++) }

for (i = 0; i < 3; i++)

return 0;

}

三、陣列傳參

陣列傳參時會降低維度,會降維為只想其內部怨怒型別的指標。

陣列作為函式引數時不會把整個陣列傳過去。

實際上只是把陣列的首位址傳過去了,所以即使在函式引數部分寫成陣列的形式:int arr[ ]表示的依然是乙個指標:int* arr;

陣列傳參,如果函式內部需要知道陣列元素個數,應該在函式外部算出元素個數,以引數的形式傳遞給函式。

例如:求陣列長度

❌錯誤求法

下面的程式結果為1

因為傳入函式的是陣列的首位址,也就是乙個整型指標,整型指標大小為4個位元組,arr[0]是乙個整數,大小也為4,4/4=1;

#define _crt_secure_no_warnings 1

#includeint len(int arr)

int main()

; printf("len=%d\n", len(arr));

return 0;

}

✔正確求法

#define _crt_secure_no_warnings 1

#includeint main()

; int len=sizeof(arr) / sizeof(arr[0]);

printf("len=%d\n", len);

return 0;

}如果函式有需要,則將其作為函式引數傳入即可。

元小白(猿小白)高階日記 三(for)

3 for for 表示式1 表示式2 表示式3 迴圈語句 表示式1 初始化部分,用於初始化變數 表示式2 條件判斷部分,用於判斷迴圈的終止 表示式3 調整部分,用於迴圈條件的調整例如 用for輸出0到10 define crt secure no warnings 1 include includ...

元小白(猿小白)高階日記 五(函式)

自定義函式 ret type fun name paral,ret type 返回值型別 fun name 函式名 paral 函式引數舉例 1 求兩個數中較大的數 define crt secure no warnings 1 include int max int x,int y else re...

元小白(猿小白)高階日記 九(習題)

用函式實現九九乘法表 define crt secure no warnings 1 includevoid showmutil int n 區域性變數開闢的空間在棧上。printf n int main 最大公約數 1 如果b等於0,計算結束,a就是最大公約數 2 否則,計算a除以b的餘數,讓a等...