一文教会你,指针常量,常量指针,指针数组,数组指针,指针函数,函数指针。

认认真真看完,教不会你砍我
1.这6个玩意可以分为两类。
①指针常量,指针数组,指针函数
②常量指针,数组指针,函数指针。

2.直接上结论,哪个词在后,这玩意就是个啥
3.看第一类①指针常量,指针数组,指针函数。
常量/数组/函数在后,这三个本质就不是指针。就好比“快乐少年”本质是少年,快乐只是形容词。
3.1指针常量:首先他就是个常量!指针是形容词。指针类型的常量,就是这个常量的值得是个地址。就好比 int * a一样,a的值就得是一个int类型的地址。
定义为int *const p; //p是个常量,常量的值是个int的指针,指针值不能变,所以指向不能变
3.2指针数组:就是个数组,数组之间有啥区别?就是成员不同,int a[8],数组的成员是int元素。char a[8],数组的成员是char元素。那int * p[8]呢?就是数组元素都是指针喽
3.3指针函数:就是个函数。函数见能有啥区别?返回值类型不一样。int型函数,返回值为int类型,float型函数,返回值为float类型。那int * p(void),就是函数返回值为指针喽

4.在看第一类②常量指针,数组指针,函数指针。
根据结论,谁在后面就是谁。这三都是指针。区别就是指针类型不同,就跟int型指针 double型指针的区别一样。
4.1常量指针,首先常量是啥?它是一个修饰int double char 的字符的修饰。意义就是不能变!为啥不能变,看我之前的帖子。const int *p就是把某一个类型的指针,给弄成常量型的了,这个指针指向一个常量。所以指针指向的值不能变
4.2数组指针,数组是啥?一堆元素组成的集合。那int *p 是指向int型的指针,那是不是得有个指针也能指向数组呢?这就是数组指针 int (*p) [8] 这玩意在二维数组中的较多。就是一个指向数组的指针
4.3函数指针:函数是啥?是一种运算方式,我们把这个运算方式可以看成一个变量,和int a 的a一样。那是不是也应该有个指针能指向他呢?void (*p)(),这就是函数指针的定义了。
4.1 4.2 4.3的定义写法,要么*两边有括号,要么*离变量最近。是因为本质都是指针,所以*优先级高
3.1 3.2 3.3 定义写法 离p最近的都不是*,所以他就不是指针.

5.总结一下
①从文字上来说,指针常量,常量指针…哪个字在后面这玩意就是哪个
②从定义来说 int * const p const int *p…*和其他谁离p(变量)近,这玩意就是谁

至于他们6个的用法,在此不做介绍

评论 1
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值