Javer 学 c++(六):数组篇

54 阅读2分钟

总览

本篇主要讲了 c++ 中的数组基本知识

概述

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

特点 1:数组中的元素类型必须都是相同的

特点 2:数组在内存空间上的分配是连续的

一维数组

创建方式

#include <iostream>
using namespace std;

int main() {

    //定义方式一:数据类型 数组名[数据长度]
    int arr1[10];
    //定义方式二:数据类型 数组名[数据长度] = {x1, x2, x3...}
    // 如果后续数据小于数据长度,会用 0 来填补
    int arr2[3] = {1, 2, 3};
    // 定义方式三:数据类型 数组名 = {x1, x2, x3...}
    int arr3[] = {4, 5, 6, 7, 8, 9, 10};

    return 0;
}

Java 声明数组的两种方式:

指定容量:int[] arr = new int[10];

直接初始化数据:String[] s = {"A", "B", "C"};

其他 API

#include <iostream>
using namespace std;

int main() {

    int arr[] = {4, 5, 6, 7, 8, 9, 10};

    // 计算数组大小   7
    cout << sizeof(arr) / sizeof(arr[0]) << endl;

    // 统计数组的首地址  0x16b452ff0
    cout << arr << endl;

    // 查看某个元素的首地址  0x16fc42ff4 正好比开头多了 4 字节
    cout << & arr[1] << endl;

    return 0;
}

二维数组

定义方式

#include <iostream>
using namespace std;

int main() {

    // 方式一:数据类型 数组名[行数][列数]
    int arr1[2][3];
    // 方式二:数据类型 数组名[行数][列数] = [[x1,x2..], [y1,y2..]..]
    int arr2[2][3] = {{1, 2, 3}, {4, 5, 6}};
    // 方式三:数据类型 数组名[行数][列数] = [x1,x2.., y1,y2....]
    // 也就是方式二去掉内层括号
    int arr3[2][3] = {1, 2, 3, 4, 5, 6};
    // 方式四:数据类型 数组名[][列数] = [x1,x2..]
    // 只指定列数,根据数据数量自动推断行数
    int arr4[][3] = {1, 2, 3, 4, 5, 6};
    
    return 0;
}

其他 API

#include <iostream>
using namespace std;

int main() {

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

    cout << sizeof(arr) << endl; // 二维数组所占空间大小
    cout << sizeof(arr[0]) << endl;  // 每一行所占空间大小
    cout << sizeof(arr[0]) / sizeof(arr[0][0]) << endl; // 一行有几个元素
    cout << sizeof(arr) / sizeof(arr[0][0]) << endl; // 二维数组有几个元素

    cout << arr << endl;
    cout << &arr[0][0] << endl;

    return 0;
}