zoukankan      html  css  js  c++  java
  • C指针

    非原创,感觉作者写的很有意思,特拿来记录一番。

    int a,
    
    int *a,
    

    第一行代码:a是int型

    第二行代码:*a是int型, a是int型指针

     

    同理

    int (*p)(int)
    

     (*p)(int) 是int型,后面带一个(int),则(*p)是函数,那么p是函数指针。

     

    那么函数指针的指针呢?

    int *(*p)(int)
    

     *(*p)(int)是int型,(*p)(int)是int的指针,(*p)是函数,p是函数指针。get√ 

    //再变化一下=> int* (*p)(int) ,看出来没,(*p)(int) 是 int*型,(*p)是函数,p是函数指针。那么这是一个返回int指针的函数指针,所以这不是函数指针的指针。

     

    int (**p)(int)
    

     (**p)(int)是int型,**p是函数,*p是函数指针,p是函数指针的指针。

     

    ----------

    int *(*(*(*abc)())[6])()如何解读

    *(*(*(*abc)())[6])()是int型,

    (*(*(*abc)())[6])()是int指针,

    (*(*(*abc)())[6])是函数,

    (*(*abc)())[6]是函数指针,

    (*(*abc)())是函数指针的数组,

    (*abc)()是函数指针的数组的指针,

    (*abc)是函数指针的数组的指针的函数,

    abc是函数指针的数组的指针的函数指针!get√

     

    ------------

     

    最好用typedef,这样会更容易看:
     
    typedef int     func(int);  
    typedef func*   pfunc;      
    typedef pfunc*  ppfunc;    
     
    ppfunc p;
     
    理解typedef,typedef int  (* func)(int),意思是  func =  int (*xxx)(int)
     

     

  • 相关阅读:
    2-SAT
    CDQ分治
    整体二分
    未完成
    [BZOJ1857][SCOI2010]传送带-[三分]
    [LCT应用]
    [胡泽聪 趣题选讲]大包子环绕宝藏-[状压dp]
    [清华集训2015 Day2]矩阵变换-[稳定婚姻模型]
    [清华集训2015 Day1]主旋律-[状压dp+容斥]
    [清华集训2015 Day1]玛里苟斯-[线性基]
  • 原文地址:https://www.cnblogs.com/jsgnadsj/p/5092887.html
Copyright © 2011-2022 走看看