<C语言>“指针数组与数组指针+指针函数与函数指针”---区别理解
来源:互联网 发布:淘宝不能发布宝贝2手 编辑:程序博客网 时间:2024/05/17 07:37
作者:wsg
时间:2017年8月15日
这四个东西很绕,学习初期让人傻傻分不清楚,实际应用当中也是让人头疼不已,下面,我用最简单的方式来教大家理解。
一、指针数组与数组指针(着重关注后面两个字)
1、指针数组:看后面两字,“数组”,说明它是一个数组,这个数组里面全部元素都是指针。
例:int *a[5]
相当于:
int a[5];int *p1, *p2, *p3, *p4, *p5;p1 = a[0];p2 = a[2];p3 = a[3];p4 = a[4];p5 = a[5];
2、数组指针:看后面两字,“指针”,说明它是一个指针,这个指针指向的地址是一个数组的地址(简要说法:这个指针指向一个数组)。
例:int (*a)[5]
相当于:
int a[5];int *p = &a;/**注意区分&a与a的区别:两者都是表示地址,&a表示整个数组的地址,a表示数组首元素的地址。虽然两者的值相同,但是意义却不一样。而数组指针是一个指向整个数组的指针,所以严格来说这里不能用a来代替&a。**/
这里()的优先级比[]高,(*a)[5]先看(*a),(*a)是一个指针。
二、指针函数与函数指针
1、指针函数:看后面两字,“函数”,说明它就是一个函数,而返回值是指针。
例:char *func(int a, int b)
相当于(char *)func(int a, int b)
这就不难看出返回值为char *型,也就是char型指针
2、函数指针:同样看后面两字,“指针”,说明它就是一个指针,指向的地址是一个函数的地址。
例:void (*p)(int a, int b)
相当于:
void func(int a, int b)void *p;p = func;
大概就是这样,个人觉得还是说得比较浅显了,作者能力有限,若有不足之处,欢迎指正!
阅读全文
0 0
- <C语言>“指针数组与数组指针+指针函数与函数指针”---区别理解
- C语言指针、指针函数与函数指针、指针数组与数组指针
- 【C语言】理解指针数组 数组指针 函数指针
- 函数指针、指针数组与数组指针
- C语言--函数指针与函数指针数组
- 数组指针与指针数组 函数指针与指针函数
- 数组指针与指针数组 函数指针与指针函数
- 指针数组与数组指针、指针函数与函数指针
- 函数指针与指针函数、数组指针与指针数组
- C语言/指针与数组&指针与函数
- c语言数组与指针,函数与指针
- C程序设计语言--指针与数组(二) 指针数组 数组指针 函数指针 指针函数
- 数组指针与函数指针
- 数组指针与函数指针
- 数组、指针与函数指针
- 指针数组、数组指针与指针函数、函数指针
- 指针函数与函数指针,指针数组及数组指针
- 指针函数与函数指针数组指针指针数组
- 1.spring boot 开卷有益
- 手风琴效果
- java 常用集合list与Set、Map区别及适用场景总结
- 查看Oracle执行计划的几种方法 / oracle中DateTime类型的字段,建立索引后,查寻时索引如何生效?/ oracle 中sql语句怎么加多个强制索引
- CentOS7 下手动配置服务,以指定用户启动进程
- <C语言>“指针数组与数组指针+指针函数与函数指针”---区别理解
- 多文件打包下载PHP
- 【栈队列】一个数组实现两个栈(共享栈)
- 频道拖拽
- Emurasoft.EmEditor.Professional.v9.08.x64.Retail.Incl.Keymaker-ZWT\
- C#基础学习
- Android-控件知识导航
- Android开发 之 BottomNavigationView
- idea内置数据库如何查看表注释