C语言的指针大归纳(One)

从变量名处说起(结合运算符的优先级结合)

int p;  //==>>一个普通的整型变量

int *p //==>>
  (1)p先与*结合,p是一个指针;
  (2)再与int结合,指针所指向的的内容的类型为int;
  (3)so,p就是一个返回int类型的指针。

int p[4]; //==>>
(1)p先与[]结合,p是一个数组;
(2)再与int结合,说明数组里的元素是int的;
(3)so,p是一个由int组成的数组。

int *p[4]; //==>>
(1)p先与[]结合,优先级比*高,p是一个数组;
(2)再与*结合,数组的元素是指针类型;
(3)再与int结合,说明指针所指向的内容的类型是int的;
(4)so,p是一个由返回int的指针所组成的数组。

  int (*p)[4]; //==>>
(1)p先与*结合,p是一个指针;
(2)再与[]结合,指针所指向的内容是一个数组;
(3)再与int结合,说明数组里的元素是int的;
(4)so,p是一个指向int的指针所组成的数组的指针。

  int **p; //==>>
(1)p先与*结合,p是一个指针;
(2)再与*结合,指针所指向的元素是指针;
(3)再与int结合,说明该指针所指向的元素是int的;
(4)so,**p是二级指针。

  int p(int); //==>>
(1)p先与()结合,p是一个函数;
(2)再进入()分析,函数有一个int变量的参数;  
(3)再与int结合,说明函数的返回值是int的。

    int(*p)(int); //==>>
  (1)p先与指针结合,p是一个指针;
  (2)再与()结合,指针指向的是一个函数;
  (3)再与()里的int结合,说明函数有一个int型的参数,
              再与最外层的int结合,即函数的返回类型为int ;
  (4)so,p是一个指向有一个int参数且返回类型为整型的函数的指针。

    int*(*p(int))[3];  //==>>
  (1)p先与()结合,p是一个函数;
  (2)在()中,与int结合,函数是一个int变量参数;
  (3)再与*结合,说明函数返回的是一个指针;
  (4)再跟[]结合,说明返回的指针指向的是一个数组;
  (5)再与*结合,说明数组里的元素是指针;
  (6)再与int结合,说明指针指向的内容是int;
  (7)so,p是一个参数为一个int参数且返回一个指向由int指针变量组成的数组的指针指针变量的函数。
最后编辑于
©著作权归作者所有,转载或内容合作请联系作者
平台声明:文章内容(如有图片或视频亦包括在内)由作者上传并发布,文章内容仅代表作者本人观点,简书系信息发布平台,仅提供信息存储服务。

推荐阅读更多精彩内容

  • 指针是C语言中广泛使用的一种数据类型。 运用指针编程是C语言最主要的风格之一。利用指针变量可以表示各种数据结构; ...
    朱森阅读 3,533评论 3 44
  • •1 C语言程序的结构认识 用一个简单的c程序例子,介绍c语言的基本构成、格式、以及良好的书写风格,使读者对c语...
    CONLYOUC阅读 8,765评论 9 66
  • 金庸笔下的江湖人物,功夫了得那是可想而知的。但双拳难敌四手,再是英雄也未必能够撑完全场。你以为,这是某些虚有其名的...
    飘雨桐V阅读 310评论 0 0
  • 目录君‖上一章.缘与接龙再相逢 第十五章:纵使相逢应不识 等我再次醒过来的时候,暮色已昏,窗户半掩,透过朦胧的纱幔...
    清风自来阅读 217评论 6 11
  • 从这个时间点来看,我是睡着了的,至少我的灵魂是入眠的,与这夜搭配得刚好。与往日无差,也是无所事事的浏览了不知道些什...
    追星狗阅读 353评论 0 0