深度理解指针及相关概念

一:首先我们必须清楚以下几点概念:

1.指针:指针就是地址。
2.指针变量:指针变量是变量,具有存储空间。就像int,float等类型一样,当然,指针有别的变量不具有的特殊用法。
3.变量指针:是变量的地址。

二: 要知道,指针也是有类型的,指针指向什么类型就是什么类型的指针,例如:

1.指针的类型:我们将type+*叫做指针的类型,type指的是指针所指向的类型,type是指最后一个*之前所有的东西,例如:char* *p,它的type部分就为char*,char *p,它的type部分就是char。
2.char**p,我们可以向将其看作type+*,可以从上面得知,type就是指针指向的类型,而这个指针它的type部分就是char*,所以指针指向的类型就是char*,而指针的类型就是char*指针。

三:区分指针数组与数组指针:

1.指针数组是数组,而数组指针是指针。
2.指针数组就是一个数组里面的元素都是指针。例如int *a[10],数组a中有十个元素,元素类型全都是整形指针。
3.数组指针就是有一个指针指向一个数组。例如int (*a)[10],指针a指向一个数组,数组里面含有10个整形元素。
4.如何区分变量是数组指针还是指针数组:唯一用来辨别的条件就是优先级,因为[]的优先级高于*,如果没加(),那么a先于[]结合,形成数组(如三.2);如果加了,那么a先于*结合,形成指针(如三.3)。

四:指针既然可以指向整形,可以指向数组,那么指针也可以指向函数,而指向函数的指针就叫做函数指针。写法:(void (*p) (); )

五:理解函数指针数组:

1.理解:函数指针数组,首先我们很容易知道它是数组,再刨析看,这是一个数组里面放的全都是函数指针。
2.例如:int(*p[5])(int x, int y),这就是一个函数指针数组,一个数组里面放的都是函数指针,指针指向的类型是返回类型为int,参数为int x, int y,的函数。

六:理解指向函数指针数组的指针:

1.理解:指向函数指针数组的指针,这肯定是一个指针,指针指向一个数组,数组里面的内容全都是函数指针。
2.例如:int(*(*p)[5])(int x, int y),这就是一个指向函数指针数组的指针,指针p,指向里面有5个函数指针类型元素的数组,函数的返回类型int,参数为int x,int y。
  • 1
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值