浅谈C语言的指针

指针对于每一个学过编程的人来说都是不陌生的,但同时也是很陌生的。指针是c的一个强有力武器,他可以直接操作内存,所以大大的提升了程序的运行速度,但是也正是因为这一特性,使得人们在使用指针是要格外的小心。我不详细说这些,我要简单说一下指针函数、函数指针、指针数组之类的绕口且比较难懂的方面。

想必很多C语言的初学者对指针都是一种保持敬畏的心态,虽然很强大,但是使用难度也不小。尤其在刚刚接触到指针函数、函数指针、指针数组、数组指针之类绕口的知识之后,更是十分头大。那我们应该怎么去理清这个中的关系,又如何去进行区分。

我看过的相当一部分书都是在那举一个例子然后分析一个,噼里啪啦都举例完了。看完了也就看完了。感觉还是一知半解。我说一下我现在总结的办法。

第一步:首先查找C语言符号的优先级顺序(这一个网上有很多,我就不列举了,大家百度一下都可以找到);

第二步:第二步开始前你要深深牢记一点,C语言符号是右结合性,知道了这一点我们就可以进行分析了,根据优先级和结合顺序,将一个某某指针一步步结合,从最简单形式写到题目中给出的形式。

第三步:这一步我一般是不看的,只是叫出这个鬼东西的名字,当你第二步完成第一个分解出的是名词,也就是其他的都是修饰他的

说了一堆文字描述性的东西,下面我举一个例子:

void   (*p)()。括号优先级高,所以首先是*p,我们为了方便表示,姑且a=*p,然后就变成了这个样子a(),这样很明显,这是一个函数,所以,我写的这个东西就是函数指针,它是指向函数的指针。其他的依次类推。

void     *p()。这个没有括号,根据又结合性,首先它是p(),这是一个函数,同样,姑且a=p(),然后接下来就变成了这样*a     。所以这是指针函数。

  



其他的也都一样的分析方法,如有不理解或者我说错的,欢迎在评论区留言

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值