数组

1、数组是一组相同类型元素的集合

int arr[10];
//arr数组元素类型:int
//arr数组类型:int [10]

2、数组的创建方式:

type_t arr_name [const_n];   //const_n为常量


3、数组的初始化方式:

完全初始化:罗列所有元素

不完全初始化:罗列前n个,其余为0

4、计算数组长度

sizeof(arr) / sizeof(arr[0])


5、数组的下标从0开始

6、一维数组在内存中的存储

1)连续存放

2)地址逐渐递增

7、二维数组的创建和初始化

1)数组创建

int arr[3][4]   //3行4列


2)数组初始化

int arr[3][4] = {1,2,3,4};
int arr[3][4] = {{1,2},{3,4}};


3)可省略行不可省略列

8、二维数组在内存中的存储

同一维数组,跨行地址依旧连续

9、数组作为函数参数

形参有两种形式:数组形式指针形式

举例:冒泡排序

void Bubble_sort(int arr[], int sz) //形参arr本质是指针
{
int i = 0;
int j = 0;
for (i = 0; i < sz - 1; i++)
{
for (j = 0; j < sz - 1 - i; j++)
{
if (arr[j] > arr[j + 1])
{
int tmp = 0;
tmp = arr[j];
arr[j] = arr[j + 1];
arr[j + 1] = tmp;
}
}
}
}
int main()
{
int arr[] = {9, 5, 8, 7, 6, 2, 1, 4};
int sz = sizeof(arr) / sizeof(arr[0]);
Bubble_sort(arr, sz);


return 0;
}


10、数组名是数组首元素的地址

但是有2个例外:

1)sizeof(数组名)  ---->数组名表示整个数组 ---->计算的是整个数组的大小单位是字节

2)&数组名  ----->数组名表示整个数组 ----->取出的是整个数组的地址(数值和首元素地址相同)