【 C 】指向数组的指针(数组指针)(行指针)

本博文内容参考:《C 和 指针》

本博文解决两个问题,一是如何访问二维数组的行,以及元素;二是如何定义指向数组的指针以及如何赋值等。

很简单,快速记录!


先给出一个案例,判断下面这两个声明以及赋值合法吗?

int vector[10], *vp = vector;

int matrix[3][10], *mp = matrix;

第一个声明是合法的。它为一个整型数组分配内存,并把vp声明为一个指向整型的指针,并把它初始化为指向vector数组的第一个元素。vector 和 vp具有相同的类型,都是指向整型的指针。也有区别,vp是指针变量,而vector是指针常量。

第二条声明语句是非法的,这里的非法是指对指针mp的赋值是不正确的,声明本身是没有问题的。

它正确地创建了一个matrix数组,并把mp声明为一个指向整型的指针。但是mp的初始化是不正确的,因为matrix并不是一个指向整型的指针常量,而是一个指向整型数组的指针。(它指向matrix数组的第一个元素,而这个元素又包含10个元素,更确切地说,也就是matrix指向该数组的第一行,也就相当于一个一维数组。)


我们怎么样声明一个指向整型数组的指针呢?

int (*p) [10];

这个声明作为一个重新捡起c语言的人来说应该是不难的,但是对于小白来说,肯定还是会吓出一身冷汗!

声明也不是乱声明的,肯定有它的道理,我们来分析下:

下标引用【】的优先级要高于间接访问*,但是括号的优先级最高,所以首先执行的还是

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

打赏作者

李锐博恩

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

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

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

打赏作者

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

抵扣说明:

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

余额充值