C 指针阅读与定义



一.阅读指针
   
 1.明确优先级:
           (p) >  p[]数组、p()函数  > *p 
       括号的优先级最高,其次是数组和函数结合最后才是 *

 2. 采用逐步替代法
       示例:
  int *( *( *a[5]) ( ) ) ( );
 1.a是数组,数组里5个元素,数组中存放的是指针,迭代替换

int *( *(P) ( ) ) ( );
2.指针指向的是什么,P后面是个小括号,数组元素是函数指针,参数是空,看返回值;迭代

int *( *P) ( );
3.函数的返回值也是个指针,进一步发现指针式个函数指针,返回值是int * ,参数空

最后总结:a是一个包含5个元素的数组,数组中存放的是函数指针,该函数指针类型是:参数为空,返回值也是个函数指针,返回的函数指针的原型是:参数空,返回值是int * 类型


二.定义指针,尽量不要复杂话,使用typedef 进行定义,减小阅读难度:

如信号函数:void (*signal (int sig, void (*func) (int siga)) ) ( int siga );

typedef定义:

typedef  int (*p_sig) (double*, char);
p_sig signal(int sig, p_sig func);


阅读别人的指针代码,没有办法,只能硬着头皮读,自己定义指针一定要小心,避免特别复杂的指针数据结构,如必须,则采用typedef定义;






评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值