陣列是一類相同元素的集合。
一、一維陣列
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等...