码迷,mamicode.com
首页 > 其他好文 > 详细

浅谈特殊的指针。

时间:2017-11-18 14:19:53      阅读:173      评论:0      收藏:0      [点我收藏+]

标签:size   需要   数组的指针   代码   语句   http   col   运算符   color   

今天我们来聊一聊,那一些特殊的指针。

1.指针数组和数组指针。

我们先来看下面两个语句:

int *p[10];    (1)

int (*p)[10];  (2)

 

这个时候我们需要引入一个很重要的东西——运算符优先级表。

技术分享图片

不难看出,“ [] ”优先级高于“ * ”,不难得出结论语句(1)中p先和“ [] ”结合,语句(2)中p因为()的存在,先和" * "结合,所以可以得出,语句(1)指的是指针数组,顾名思义,即存放指针的数组,而语句(2)是数组指针,即一个有能力指向一个数组的指针。

2.函数指针。

接下来我们来看下面两个语句:

void (*pfun1)();      (1)

void *pfun2();        (2)

 

 

 

我们对于语句(2)应该很熟悉,这就是一个返回值为void*类型的函数,而对于语句(1),就又要用到我们的运算符优先级表了,语句(1)中p先与“ * ”结合,所以语句(1)是一个指针,而且他指向一个没有参数的函数,返回值类型为void。

3.函数指针数组

最后我们要讲一下函数指针数组,看下面代码:

int (*parr[10])();

 

根据优先级,parr先和" [] "结合,所以该语句是一个数组,然后parr[]与“ * ”结合,所以数组里的内容是指针,而且是函数指针。

函数指针数组用途有:计算器。具体在这里也不举例了。

4.总结

讲了这些,我们就需要提一下,我们在区分一个变量是函数还是指针还是数组的时候,最需要用到的一个工具——运算符优先级表。有了这东西,我们将来遇到数组指针,指针数组,函数指针,函数指针数组,甚至指向函数指针数组的指针的时候,也可以很好的看出其类型。

感谢审阅。

 

浅谈特殊的指针。

标签:size   需要   数组的指针   代码   语句   http   col   运算符   color   

原文地址:http://www.cnblogs.com/shy0322/p/7856443.html

(0)
(0)
   
举报
评论 一句话评论(0
登录后才能评论!
© 2014 mamicode.com 版权所有  联系我们:gaon5@hotmail.com
迷上了代码!