[面试] C/C++ 语法(二)—— 二维数组

51 篇文章 0 订阅
int mat[][5] = {{1, 2, 8, 9}, {2, 4, 9, 12}};

mat[0] ==> 第一行
        mat[0][0] 第一行第一列,1
        mat[0][1] 第一行第二列,2
mat[1] ==> 第二行
        mat[1][0] 第二行第一列,2
        mat[1][1] 第二行第二列,4

1. 二维数组行数和列数的获得

int m = sizeof(mat)/sizeof(mat[0]);
                            // 行数
int n = sizeof(mat[0])/sizeof(mat[0][0]);
                            // 列数

2. 二维数组转换为一维数组

(所谓一维数组就是按行序将所有的元素连到一个串行结构)的方法

强制类型转换

int* p = (int*)mat;
p[i*n + j]            ⇒ i行j列上的元素

3. 使用数组指针

数组指针和指针数组的区别

所谓数组指针,即为指向数组的指针,其指向的数组可以是二维数组的每一行

int (*p)[4] = mat;
p[0]            // 第0行
p[1]            // 第1行

4. 二维数组的定义

int** mat = new int*[5];                // 5 表示行数
for (int  i = 0; i < 5; ++i)
    mat[i] = new int[3];                // 3 表示列数
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包

打赏作者

五道口纳什

你的鼓励将是我创作的最大动力

¥1 ¥2 ¥4 ¥6 ¥10 ¥20
扫码支付:¥1
获取中
扫码支付

您的余额不足,请更换扫码支付或充值

打赏作者

实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值