美文网首页
第13章,高级指针话题

第13章,高级指针话题

作者: Dafanzi | 来源:发表于2017-01-08 13:52 被阅读0次

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

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

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

高级声明

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会显得异常臃肿。我们可以采用转移表的方法来解决这个问题,不同的处理我们用不同的函数,然后声明一个函数指针,不同的情况对应不同的下标,然后分别调用相应的处理函数即可。

命令行参数

字符串常量

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

相关文章

  • 第13章,高级指针话题

    进一步探讨指向指针的指针 指针的指针使用过多会使程序变得庞大,变得难以维护。但指针的指针在如链表的插入操作中,又是...

  • 12 C指针

    1、指针定义 2、指针进阶 3、指针使用 4、多级指针 4、指针和数组 5、指针和字符串 6、高级指针之和指向函数的指针

  • 第3章 Spring 高级话题

    Spring Aware Spring的依赖注入最大的亮点就是所有的Bean对Spring容器的存在是没有意识的,...

  • 第17章 指针的高级用法

    英文原版:P413 本章主要内容: 17.1节介绍动态内存分配的基础知识; 17.2节介绍如何动态分配字符串,这要...

  • WEB面试题总结

    模块一 JavaScript高级内功修炼 this指针/闭包/作用域 1.this指针详解 什么是this指向th...

  • 委托

    参考:C#高级编程第10版第9章 委托是寻址方法的.NET版本,在C++中,函数指针指向的是一个内存位置,无法判断...

  • Javascript高级话题

    面向对象、作用域、闭包、设计模式等。 1. 常见的JS类定义方式 构造函数原型 对象创建 原型法是通用老方法,对象...

  • C-数组篇(一维数组-上)

    数组,相信大家都使用过。本文将由浅入深的讨论数组,探索一些更高级的数组话题,如多维数组、数组与指针及数组的初始化等...

  • 07.高级指针

    指针的指针 int i; int *pi; int **ppi; printf("%d\n",ppi); 如果pp...

  • 第19章 函数的高级话题

    lambda表达式和def语句有什么关系?两者都可以声称函数,lambda是简易的函数表达式,用于逻辑简单的场合,...

网友评论

      本文标题:第13章,高级指针话题

      本文链接:https://www.haomeiwen.com/subject/evvqbttx.html