数组
-
一维数组
-
定义:
type_t arr_name [const_n]; //type_t :数组元素类型 //arr_name :数组名 //const_n :必须是常量
-
初始化:
int arr1[3]={1,2,3};//完全初始化 int arr2[3]={1};//不完全初始化 int arr3[]={1,2,3};// == int arr3[3]={1,2,3}; char ch1[5]={'a','b','c'};//以字符的形式初始化 char ch2[5]="abc";//以字符串的形式初始化 //共有5个字符:a,b,c,\0,0 char ch3[]="abc";//== char ch3[5]="abc" //共有4个字符:a,b,c,\0 char ch4[]={'a','b','c'};//== char ch4[5]={'a','b','c'}; //共有3个字符:a,b,c
-
:下标引用操作符
arr[0]=1; printf("%d\n",arr[0]);
-
计算数组长度:
int sz=sizeof(arr)/sizeof(aee[0]);
-
-
二维数组:
-
定义:
int arr[3][4]; char ch[3][10];
-
初始化:
int arr1[2][3]={1,2,3,4,5,6};//初始化,按行排列 int arr2[2][3]={1,2,3,4,};//初始化,按行排列,用0补齐 int arr3[2][3]={{1,2},{3}};//初始化,第一行:1,2,0 第二行:3,0,0 int arr4[][3];//√;行数可以省略 int arr5[2][];//×;列数不可以省略
arr3:
-
二维数组在计算机中的实际存储形式:
-
-
数组作为函数参数:
-
一个练习:冒泡排序
//冒泡排序 void bubble_sort(int arr[], int sz) { int i = 0; int j = 0; int flag = 1; for (i = 0; i < sz - 1; i++) { for (j = 0; j < sz - 1 - i; j++) { if (arr[j] < arr[j + 1]) { int temp = arr[j]; arr[j] = arr[j + 1]; arr[j + 1] = temp; flag = 0; } } if (flag == 1) { break; } } } int main() { //将arr,由大到小排列 int arr[10] = { 1,2,3,4,5,6,7,8,9,10 }; int sz = sizeof(arr) / sizeof(arr[0]);//求数组长度 bubble_sort(arr,sz); //打印排序之后的arr for (int i = 0; i < sz; i++) { printf("%d\n", arr[i]); } return 0; }
-
数组名是什么:
数组名:数组首元地址
但是有两种情况例外:
-
sizeof(数组名):数组名表示整个数组,计算的是整个数组的大小,单位:字节
-
&数组名;数组名表示整个数组,去除的使整个数组的地址
printf("%p",arr);//取数组首元地址 printf("%p",&arr);//取数组地址 printf("%p",arr+1);//数组首元地址+1 printf("%p",&arr+1);//整个数组,每个元素地址+1
-
-