内功修炼搜集知识iOS Developer

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

2016-06-30  本文已影响711人  遮天的龙

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

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指针变量组成的数组的指针指针变量的函数。
上一篇下一篇

猜你喜欢

热点阅读