数组

■ 概述

  数组,就是一个集合,里面存放了相同类型的数据元素

■ 特点

  1) 数组中的每个数据元素都是相同的数据类型

  2) 数组是由连续的内存位置组成,数组里的数据放在一块连续的内存空间

■ 一维数组

□ 一维数组定义的三种方式

  1) 数据类型 数组名[数组长度];

int arr[5];
arr[0] = 10;
arr[1] = 20;
arr[2] = 30;
arr[3] = 40;
arr[4] = 50;

  2) 数据类型 数组名[数组长度] = {值1,值2 ...};

int arr[5] = {10,20,30,40,50};

  3) 数组类型 数组名[] = {值1, 值2 ...};

int arr[] = {10,20,30,40,50}; //编译器可以通过大括号元素的个数推测数组的长度
int arr[];   //报错,定义数组的时候,必须要有初始长度

◆ 总结

  1) 数组名的命名规范与变量名的命名规范一直,不要与变量重名

  2) 数组下标识是从0开始索引的

□ 一维数组数组名

◆ 一维数组名的用途

   1) 可以统计整个数组在内存中的长度 

sizeof(arr[0])  //获取数组第一个元素所占内存大小
sizeof(arr)  //获取数组所占内存大小

   2) 可以获取数组在内存中的首地址

cout << arr << endl; //返回数组arr的内存地址
cout << &arr[0] << endl;  //返回数组arr第一个元素的内存地址

    3) 数组名是常量,不可以进行赋值操作

arr = 100; //报错

■ 二维数组

□ 二维数组定义

二维数组就是在一维数组上,多加一个维度

□ 二维数组声明

  声明有以下四种方式:

    1) 数据类型 数组名[行数][列数];

int arr[2][3];

arr[0][0]=1;
arr[0][1]=2;
arr[1][0]=3;
arr[1][1]=4;
arr[2][0]=5;
arr[2][1]=6;

for(int i = 0; i < 2 ; i ++)
{
    for(int j = 0; j < 2 ; j ++)
    {
        cout << arr[i][j] << endl;
    }
} 

    2) 数据类型 数组名[行数][列数] = {{数据1,数据2},{数据3,数据4}};

        更加直观,提高代码的可读性,推荐使用

int arr1[2][3] = 
{
  {1,2,3},
  {4,5,6}
}

    3) 数据类型 数组名[行数][列数] = {数据1,数据2,数据3,数据4};

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

    4) 数据类型 数组名[][列数] = {数据1,数据2,数据3,数据4};

     该种方式会通过初始数据元素和列数自动推算出行数,但是仅通过行数缺无法推断出列数,比如行数是3,则到底是每行1个元素还是每行2个元素,是无法推测的

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

    注意:当进行初始化定时,可以省略行数,但不可以省略列数

□ 查看二维数组所占内存空间

int arr1[2][3] = 
{
  {1,2,3},
  {4,5,6}
}

cout << sizeof(arr1) << endl;  //输出:24
cout << sizeof(arr1[0]) << endl;  //输出:12,二维数组第一行占用内存
cout << sizeof(arr1[0][0]) << endl;  //输出:4,二维数组第一元素占用内存
cout << sizeof(arr1)/sizeof(arr1[0]) << endl;  //输出:2,二维数组的行数
cout << sizeof(arr1[0])/sizeof(arr1[0][0]) << endl;  //输出:3,二维数组的列数

double arr2[2][3] = 
{
  {1,2,3},
  {4,5,6}
}
cout << sizeof(arr2) << endl;  //输出:48

□ 获取二维数组首地址

cout << arr1 << endl;   //返回二维数组的首地址
cout << arr[0] << endl;   //返回二维数组第一行首地址,与二维数组的首地址相同
cout << arr[1] << endl;   //返回二维数组第二行首地址,与二维数组的首地址相同
cout << &arr[0][0] << endl;   //返回二维数组第1元素的首地址,与二维数组的首地址相同,查看具体元素的地址需要使用取址符
cout << &arr[0][1] << endl;   //返回二维数组第1元素的首地址,与二维数组的首地址相同,查看具体元素的地址需要使用取址符
原文地址:https://www.cnblogs.com/shiliye/p/13983645.html