C 指针阅读与定义

来源:互联网 发布:golang accept 编辑:程序博客网 时间:2024/05/20 21:44


一.阅读指针
   
 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定义;






原创粉丝点击