第13章,高级指针话题

进一步探讨指向指针的指针

指针的指针使用过多会使程序变得庞大,变得难以维护。但指针的指针在如链表的插入操作中,又是必须的;

综上所述在不需要使用指针的指针的地方就尽量不要使用。

高级声明

int f;           int  *f;       int *f,g;

int f();         int *f();/*()的优先级大于* ,所以这里指函数f的返回值为int *  */          int (*f)(); /*f是一个函数指针,其返回值为int */

int  f[];   int *f[]  /*下标的优先级更高,所以f是一个数组,数组元素为int  * */

int (*f[])();f首先是一个数组,数组元素是一个指针,这个指针是函数指针类型

函数指针

回调函数

最常用的应用场景,当你需要在一个链表里查找某个值时,如果是数字字符是否相等用==就好了,如果是字符串的话就需要使用另外的比较方式。所以为了完成查找这个值得在函数中考虑不同的值类型。一种较好的方法是,我们在链表中查找某个值的函数定义的参数中声明一个函数指针(不同的值就传不同的比较函数)。然后值的参数类型用void *,因为值有很多中,这样不同的值类型都可以用这同一个链表差值的函数,只是给它传递不同比较函数即可。

转移表

类似这样的场景可以用转移表。当考虑多种情况,分情况选择不同的处理。最常采用的方法是使用switch结构,但如果情况多了的话,switch会显得异常臃肿。我们可以采用转移表的方法来解决这个问题,不同的处理我们用不同的函数,然后声明一个函数指针,不同的情况对应不同的下标,然后分别调用相应的处理函数即可。

命令行参数

字符串常量

下面两个小例子用到了这个知识

最后编辑于
©著作权归作者所有,转载或内容合作请联系作者
【社区内容提示】社区部分内容疑似由AI辅助生成,浏览时请结合常识与多方信息审慎甄别。
平台声明:文章内容(如有图片或视频亦包括在内)由作者上传并发布,文章内容仅代表作者本人观点,简书系信息发布平台,仅提供信息存储服务。

相关阅读更多精彩内容

  • 指针是C语言中广泛使用的一种数据类型。 运用指针编程是C语言最主要的风格之一。利用指针变量可以表示各种数据结构; ...
    朱森阅读 8,827评论 3 44
  • 前言 把《C++ Primer》[https://book.douban.com/subject/25708312...
    尤汐Yogy阅读 13,154评论 1 51
  • 一、基本数据类型 注释 单行注释:// 区域注释:/* */ 文档注释:/** */ 数值 对于byte类型而言...
    龙猫小爷阅读 9,771评论 0 16
  • 3月17日晚8:00,我们棒棒堂的微课堂第一讲准时开始。 你,来了吗? 上期讲座主题是《怎样与孩子有效沟通》。 我...
    bravo1988阅读 2,271评论 0 2
  • 目前我使用的是Charles4.0.2版本 ,下面给出下载地址,以及破解方法,破解很简单; 下载地址:https:...
    gogoingmonkey阅读 2,586评论 0 0

友情链接更多精彩内容