C语言学习第27篇---指针阅读技巧剖析

举报
CodeAllen 发表于 2021/10/29 23:04:38 2021/10/29
【摘要】 知识来源主要是陈正冲老师的《C语言深度解剖》及Delphi Tang老师的《C语言剖析》和《征服C指针》,《C和指针》,有兴趣的朋友可以看我置顶文章获取   指针如何阅读,非常重要,实习项目中经常使用   左右法则: 1.从最里边的圆括号中未定义的标识符看起 2.首先往右看,在往左看 3.遇到圆括号或方...

知识来源主要是陈正冲老师的《C语言深度解剖》及Delphi Tang老师的《C语言剖析》和《征服C指针》,《C和指针》,有兴趣的朋友可以看我置顶文章获取

 

指针如何阅读,非常重要,实习项目中经常使用

 

左右法则:

1.从最里边的圆括号中未定义的标识符看起

2.首先往右看,在往左看

3.遇到圆括号方括号时可以确定部分类型,并调转方向

4.重复2 3 步骤,直到阅读结束

 

 

int (*p) (int):

==>p为指针,指向函数,函数参数有一个int参数,其返回值为int

 

练习:


  
  1. #include <stdio.h>
  2. int main()
  3. {
  4. int (*p1)(int*, int (*f)(int*));
  5. //p1为指针,指向函数,指向的函数参数为int*, f为第二个参数,他是函数指针,指向的函数参数时int*,返回值是int,,,,返回值是int
  6. int (*p2[5])(int*);
  7. //p2为数组,有5个参数,这5个参数为指针指向函数,函数类型为int(int*)
  8. int (*(*p3)[5])(int*);
  9. //p3是指针,数组指针,指向的数组有5个元素,这5个元素是指针,函数类型是int(int*)
  10. int*(*(*p4)(int*))(int*);
  11. //p4是指针,是函数指针,参数时int*,返回值为指针,是指针函数,指向的函数类型是int(int*)
  12. int (*(*p5)(int*))[5];
  13. //p5是指针,是函数指针,参数时int*,返回值为指针,指向数组,指向的数组类型是int[5]
  14. return 0;
  15. }

 

有一个问题,工程里面应该使用这么复杂的代码吗?

不应该,简化的方法就是typedef,这个是使用的非常广的,可以简化指针和数组的定义

但是在简化之前应该先读懂这个代码!!!


  
  1. int (*(*p5)(int*))[5];
  2. typedef int(ArrayType)[5];
  3. typedef ArrayType*(FuncType)(int*);
  4. FuncType* p5; //就是这样就简化了很多

 

小结:

1.右左法则总结于编译器对于指针变量的解析过程

2.指针阅读练习的目的是理解指针的组合定义

3.可以通过typedef简化复杂指针的定义

 

 

 

 

 

 

 

文章来源: allen5g.blog.csdn.net,作者:CodeAllen的博客,版权归原作者所有,如需转载,请联系作者。

原文链接:allen5g.blog.csdn.net/article/details/89112679

【版权声明】本文为华为云社区用户转载文章,如果您发现本社区中有涉嫌抄袭的内容,欢迎发送邮件进行举报,并提供相关证据,一经查实,本社区将立刻删除涉嫌侵权内容,举报邮箱: cloudbbs@huaweicloud.com
  • 点赞
  • 收藏
  • 关注作者

评论(0

0/1000
抱歉,系统识别当前为高风险访问,暂不支持该操作

全部回复

上滑加载中

设置昵称

在此一键设置昵称,即可参与社区互动!

*长度不超过10个汉字或20个英文字符,设置后3个月内不可修改。

*长度不超过10个汉字或20个英文字符,设置后3个月内不可修改。