C语言指针系列——并不可怕的声明

本文深入解析C语言中复杂的指针声明,包括指针的指针、数组的指针、函数的指针等。通过图示法和操作符优先级,帮助读者理解指针声明的规律,例如`int (*var)[6]`是表示`var`是一个指向含有6个整数的数组的指针,而`int *var[6]`则表示`var`是一个包含6个整数指针的数组。文章强调掌握操作符优先级和由内向外的分析方法对于理解指针声明至关重要。
摘要由CSDN通过智能技术生成

指针就像双节棍,指针的指针就像三节棍,依此类对至n节棍。。。

指针的数组,呃,就像某种伤不起的棍。。。

 

C语言里面最灵活、有时候也是最让人莫名的就是指针了,以至于专门有一本书叫《C和指针》。尤其是指针的声明,指向整型的指针,指向数组的指针,指向函数的指针,再加上n多个括号的组合,有时候真让人摸不到头脑。其实,理解指针声明的关键首先在于记住*, [], ()操作符的优先级和结合性;然后由指针名称开始由内向外层层解剖,再复杂的声明也不难解释。本文使用一种自创的图示的方法,来清晰地展示指针声明的根本。

 

首先我们来看一下与指针声明相关的一些运算符的优先级:

(优先级高低由上至下,即上面的操作符的优先级高于下面的运算符的优先级。)

 

操作符 描述 结合性
()  函数调用  L-R
[]  下标引用  L-R 
* 间接访问 R-L

 

请务必记住以上运算符的优先级,下面我们来看几个例子。为了能更形象地说明指针声明,我们使用图示法。

 

 

1. 基本数据类型的指针。

让我们从最简单的开始,相信大家都能说出这个声明中var的意思。

a) int *var;

显然,var是一个指向整型的指针,图示如下:

 

 

2. “数组的指针”和“指针的数组”

经过热身,来看一下数组的指针。

a) int (*var)[6];

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值