数组

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

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)&数组名  —–>数组名表示整个数组 —–>取出的是整个数组的地址(数值和首元素地址相同)