• Index

静态数组

Reads: 7

一维静态数组

静态数组就是使用栈内存的数组,一般简称数组

基础示例

以下是数组的创建和简单使用:

#include <iostream> // std::cout std::endl

int main(void)
{
    // 创建具有10个元素的数组并且全部初始化为0
    int arr1[10] = {};

    // 跟上面一样, 赋值符号可省略
    int arr2[10]{};

    // 创建具有10个元素的数组,前三个分别初始化为1, 2, 3, 剩余全部初始化为0
    int arr3[10]{ 1, 2, 3 };

    // 创建具有4个元素的数组, 编译器在编译的时候会确定数组中元素的数量
    int arr4[]{ 4, 5, 6, 7 };

    // 对数组的元素进行操作
    arr4[2] = 1024; // arr4的现在元素是{ 4, 5, 1024, 7 }

    // 数组名是内存地址而不是指针, 去掉下面注释将会报错
    // arr1 = arr4;

    // 数组名是数组的首地址, 使用指针保存数组首地址
    auto *p = arr4; // int *p = arr4;

    std::cout << p[2] << std::endl;

    return 0;
}

输出结果:

1024

基础讲解

静态数组的创建就像上面代码一样,使用方法和动态数组一样。

唯一要注意的是:数组名是数组所占用的连续栈内存的首地址,它不是指针。

多维数组

基础示例

#include <iostream> // std::cout std::endl

int main(void)
{
    // 创建具有2 * 3个元素的数组并且全部初始化为0
    int arr1[2][3] = {};

    // 跟上面一样, 赋值符号可省略
    int arr2[2][3]{};

    // 创建具有2 * 3个元素的数组并初始化给元素的值
    // 它的值就是
    // 1 2 3
    // 4 5 6
    int arr3[2][3]{ { 1, 2, 3 }, { 4, 5, 6 } };

    // 创建具有2 * 3个元素的数组, 第一维可以省略, 编译器在编译的时候会确定第一维元素的数量
    int arr4[][3]{ { 1, 2, 3 },{ 4, 5, 6 } };

    // 对数组的元素进行操作, 改变第2行第3个元素的值
    arr3[1][2] = 1024; // arr4的现在元素是{ { 1, 2, 3 },{ 4, 5, 1024 } }

    // 多维数组实际上也是连续的栈内存
    auto *p = reinterpret_cast<int *>(arr3);
    for (std::size_t i = 0; i < 6; ++i) // arr3有2*3=6个元素
    {
        p[i] = 100 * i;
    }

    // 输出二维数组arr3的值
    for (std::size_t i = 0; i < 2; ++i)
    {
        for (std::size_t j = 0; j < 3; ++j)
        {
            std::cout << arr3[i][j] << ' ';
        }
        std::cout << std::endl;
    }

    return 0;
}

输出结果:

0 100 200 
300 400 500 

基础讲解

二维数组的声明类似于:int arr1[2][3];;而三维数组的声明类似于:int arr2[10][22][33];;以此类推。


Comments

Make a comment

  • Index

WARNING: You are using an old browser that does not support HTML5. Please choose a modern browser (Chrome / Microsoft Edge / Firefox / Sarafi) to get a good experience.