【跟着小甲鱼学C语言】P24 指针和二维数组

本文深入探讨了C语言中指针与二维数组的关系,解释了二维数组名作为行指针的概念,并通过实例代码展示了如何利用指针操作二维数组,为初学者提供了深入理解指针机制的途径。

摘要生成于 C知道 ,由 DeepSeek-R1 满血版支持, 前往体验 >

指针和二维数组

1.关于二位数组的名字

int array[5][6] = {0};定义了一个二位数组array,这个array是一个指向五个元素的行指针常量。我们知道 *(array+1) == array[1]代表的是这个二维数组第二行的名字,换句话说,代表的是array[1]这个一维数组的名字,也就是普通的指针常量。注意这里*并没有取值的意思,而只是一个语法糖,把一个行指针常量降级成为了普通指针常量。其实在C语言里面一定要注意一个概念,索引只是指针的语法糖

2.一道课后题

如果不上机,你能看出下边代码将打印什么值吗?

#include <stdio.h>

int main()
{
        int array[9] = {1, 2, 3, 4, 5, 6, 7, 8, 9};
        int (*p)[3] = (int (*)[3])&array;

        printf("%d\n", p[2][2]);

        return 0;
}

答:9
分析:对于初学者来说,这道题的难度级别很高,但当你尝试去理解它其中的原理之后,你会发现对指针的认识又深入了一点儿呢!
等号右边强制将 array 这个一位数组重新划分成 3 * 3 的二维数组,然后用数组指针指向它(本章最后说如果要使用指针来指向二维数组,只能使用数组指针,还记得吗?)。

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

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

余额充值