常见指针类型入门
作者:网络转载 发布时间:[ 2017/3/6 10:06:28 ] 推荐标签:测试开发技术 C++
int p(int);
这里是()的另一个作用。
这里的()是函数调用运算符,()内写清了参数列表,所以,p是一个函数,函数有一个整型变量的参数,函数返回值为整型。
int p(int, int *, int);
分析过程同上一点,直接给出结果。
p是一个函数,有三个参数,依次为整型、指向整型的指针和整型,返回值为整型。
int **p;
C++中没有**这种的运算符,所以这种写法是等同于int *(*p);的。
其表示,p是一个指针,指向了一个指针变量,且被p指向的那个指针指向整型。
这种指针称作二级指针,类似的,还有多级指针,但在实际编写程序时,二级指针的使用已经比较少了,多级指针更是几乎(不代表没有用处)不会使用,所以初学者不必考虑多级指针。
int (*p)(int *, int);
p是一个指针,指向了一个函数,这个函数的参数列表为(int *, int),返回值为int。
这里的p,我们称之为函数指针,因为它指向了函数。函数指针的概念需要实际练习几次才能初步掌握。
void (*p[SIZE])(int *, int);
这种复杂程度的类型定义是程序中经常见到的,所以一点一点地来分析。
p先与[]结合,说明p是一个数组;再与左侧的*结合,说明数组里的元素都是指针;之后与右侧的函数调用运算符()结合,那些指针指向的函数的参数依次为(int *, int),返回值类型为void。所以,再整理一下刚刚的分析:
p是一个由SIZE个元素构成的数组,每个元素都是函数指针,其指向的函数的参数依次为指向整型的指针、整型,返回值类型为void。
这种类型要求重点掌握。
int *(*p(int))[SIZE];
这种类型的可以先跳过,在确认了掌握了上面讲述的所有定义后再来尝试理解。
从p开始分析,先与()结合,说明p是一个函数;然后进入到参数列表中,发现这个函数的参数只一个int;再看p左侧的*,说明这个函数的返回值是一个指针;之后到外层(这里外层的()是为了强制改变优先级),先与[]结合,说明函数返回的指针指向的是一个数组;再与左面的*结合,说明指向的数组中的元素都是指针;后与int结合,说明数组中的元素指向整型。
所以,p是一个参数为一个int、且返回一个指向由SIZE个int *构成的数组的的指针的函数。
<code> 这里思考,如果去掉外层的`()`,即改为如下:
`int **p(int)[SIZE];`
会是什么结果?为什么?欢迎在之后的讨论区发表意见。
</code>
三、结语
常用的指针类型(或者直接说是类型)定义大多都是如上类型的变种,当然会有更复杂的,不过再复杂的都可以用上述的方法来进行分析。
本文内容不用于商业目的,如涉及知识产权问题,请权利人联系SPASVO小编(021-61079698-8054),我们将立即处理,马上删除。
相关推荐
更新发布
功能测试和接口测试的区别
2023/3/23 14:23:39如何写好测试用例文档
2023/3/22 16:17:39常用的选择回归测试的方式有哪些?
2022/6/14 16:14:27测试流程中需要重点把关几个过程?
2021/10/18 15:37:44性能测试的七种方法
2021/9/17 15:19:29全链路压测优化思路
2021/9/14 15:42:25性能测试流程浅谈
2021/5/28 17:25:47常见的APP性能测试指标
2021/5/8 17:01:11热门文章
常见的移动App Bug??崩溃的测试用例设计如何用Jmeter做压力测试QC使用说明APP压力测试入门教程移动app测试中的主要问题jenkins+testng+ant+webdriver持续集成测试使用JMeter进行HTTP负载测试Selenium 2.0 WebDriver 使用指南