zoukankan      html  css  js  c++  java
  • 函数声明中的指针

    int  a

      a是一个int型变量

    int  func()

      func是一个返回int类型的无参函数

    int  *a:

      a是一个指向int类型变量的指针

    int  *func()

      相当于int  *func()),func是一个函数,返回值为指向整型的指针

      *不是用来定义func,说明返回值是指针

    int *func)()

      func是一个指针,指向一个返回值类型为int的无参函数

      *用来定义指针,与返回值无关

     

    小结:

    先判断是函数还是指针

    函数:其后()里的是参数,函数名前所有符号都说明了返回值

    指针:如果后面有(),说明是函数指针,不包括*的前面所有的符号说明了指向的函数的返回类型

     

    关于类型转换:

    1 某个类型a想转换成int a

      (inta,即(int)表示向int的强制转换

    2 某个类型a想转换成 int *a

      (int *a,即(int *)表示向指向int的指针的强制转换

    3 某个类型a想转换成int *a)(int

      (int *)(int))a,即(int *)(int))表示向 指向 以int为参数返回int型的函数 的指针 的强制转换

    4void *)())

      添加变量名a,去掉最外面的括号得到:void *a)()

      表示指向返回为void的无参函数的指针,

      所以原式表示向 指向返回void的无参函数的指针 的强制转换

    5 将常数0强制转换为 指向 返回值为void的无参函数 的指针

      (void *)())0 0被强制转换成一个函数指针

      如果 #define fp void *)())0

       则fp将成为一个指针,这个指针指向一个返回值为void的无参函数

      调用这个函数:(*fp)()

      即:(*void *)())0)()

      解读:将0强制转换成函数指针后再解引用调用这个函数

    6 如果一个函数的返回值是一个函数指针

      这个函数名:signal,函数参数:(intvoid *func)int)

      返回值:void *a)(int

      那么这个函数的定义:

      void *signalintvoid*func)(int))(int

  • 相关阅读:
    JSP中9大内置对象类型
    使用JSP/Servalet技术开发新闻发布系统------JSP数据交互一
    BZOJ5306: [Haoi2018]染色
    BZOJ4695: 最假女选手
    BZOJ4355: Play with sequence
    BZOJ3771: Triple
    BZOJ4057: [Cerc2012]Kingdoms
    BZOJ3302: [Shoi2005]树的双中心
    BZOJ4036: [HAOI2015]按位或
    12.24 ~ 12.30周训练计划+总结
  • 原文地址:https://www.cnblogs.com/buptlyn/p/4158603.html
Copyright © 2011-2022 走看看