• 【005:二维数组问题】


    005:二维数组问题

    在 C/C++ 中,我们将使用两个下标的数组称之为二维数组。相比于一维数组中,下标作为索引的存在,二维数组的下标索引往往带有 的意义。如表示一个四边形的四个二维坐标(x,y)这样的场景,就可以使用二维数组进行存储(使用结构体表示一个点的 x/y 坐标也是可以的)。

    1. 二维数组的初始化

    方式一:指定数据初始化

    int a[3][2] = {0, 1, 2, 3, 4, 5}; // -Wmissing-braces
    int a[3][2] = {{0, 1}, {2, 3}, {4, 5}};
    

    方式二:默认初始化

    int a[3][2] = {0}; // 全为0
    int b[3][2] = {};  // 全为0
    int c[3][2];       // 全为随机数
    

    2. 二维数组的访问

    方式1:下标式

    #include <stdio.h>
    
    int main(int argc, char const *argv[])
    {
        (void)(argc);
        (void)(argv);
    
        int a[3][2] = {{0, 1}, {2, 3}, {4, 5}};
    
        for (int i = 0; i < 3; i++)
        {
            for (int j = 0; j < 2; j++)
            {
                printf("a[%d][%d]=%d
    ", i, j, a[i][j]);
            }
        }
    
        return 0;
    }
    
    

    方式二: 指针式

    #include <stdio.h>
    
    #include <stdio.h>
    
    int main(int argc, char const *argv[])
    {
        (void)(argc);
        (void)(argv);
    
        int a[3][2] = {{0, 1}, {2, 3}, {4, 5}};
    
        for (int i = 0; i < 3; i++)
        {
            for (int j = 0; j < 2; j++)
            {
                printf("a[%d][%d]=%d
    ", i, j, *(*(a + i) + j));
            }
        }
        for (int i = 0; i < 3; i++)
        {
            for (int j = 0; j < 2; j++)
            {
                printf("a[%d][%d]=%d
    ", i, j,*(&a[0][0] + i * 2 + j));
            }
        }
        return 0;
    }
    
    

    3. 指针式访问说明

    对于指针式访问有两种写法,对应于数组地址+1数组名+1 这两种关系。

    对于数组名访问的方式:

    • a+i 类型为 int (*)[2]
    • *(a+i) 类型为 int *
    • (*(a+i)+j) 类型为 int *

    而使用数组地址访问,直接按照线性关系移动即可。

  • 相关阅读:
    Docker 尝试安装rabbitmq实践笔记
    linux zip,tar压缩文件夹 忽略 .git 文件夾
    virtualbox manager命令小记
    股市有规律吗?
    会员管理系统全部源代码(C#+EF+SQLite+Winforms实现)
    Sql Server Express连接字符串
    Asp.net导出Excel乱码的解决方法
    淘宝开放平台Session Key有效期
    tesseract ocr文字识别Android实例程序和训练工具全部源代码
    汉字拼音带声调和发音mp3文件(C#源程序)
  • 原文地址:https://www.cnblogs.com/yexiaopeng/p/15440992.html
Copyright © 2020-2023  润新知