c语言之解释复杂指针

int p;一个普通的int类型变量p

int *p;是从右往左则p与结合 p为指针变量 指向int类型指针变量

int p[3];p是一个有三个元素 的数组 元素类型为int类型

int p[3];
因为[]优先级大于
则p先与[]结合 则p为一个有三个元素的数组
再与*结合 从右到左 p[3]与**结合 表示是指针,则表示p数组的三个元素都是指针
最后int 表示p数组的三个元素都是指针并指向的是int类型

int (p)[3];
因为()所以p先于
结合 表示p是一个指针
然后p指针再与[]结合表示p是一个指向一个三个元素的数组的指针
最后int 表示p指针指向一个有三个元素的数组 数组元素为int类型

int **p;二级指针
p与最右边的结合 表示p是一个指针
p再与另外一个结合表示
p也是一个指针
最后与int结合 表示*p是一个指向int类型的指针而p就是一个指向int类型的指针的指针。称为二级指针

int p(int);
p与()结合,说明p首先是个函数,
然后再与int结合,说明函数的返回值是int变量。

int (p)(int);
因为()则p先于
结合 表示p是一个指针
再与(int)结合表示p是一个指向一个int形参的函数的指针
再与int结合表示p是一个指向int形参并返回in类型的函数的指针

int (p(int))[3];
()优先于
:则p先于(int)结合表示 p是一个int形参的函数
再与
结合 表示p是一个,int形参,返回指针,的函数
因为[]优先于则先于[3]结合表示
p是一个,int形参,返回一个指向一个有三个元素数组的指针,的函数
再又与
结合
我们先把之前搞定的有个字母表示
int * A【3】;
那么就意味着 ,与*结合就表示 数组的类型是指针类型
再与int结合 就表示数组元素的类型是指向int类型的指针变量

最后回到p
p是一个函数 一个int形参的 返回一个指针 (指向数组元素为int型指针的数组)

int (*(*p)(int))(int);
p表示p是一个指针
再与(int)结合 表示p是一个指向函数的指针 函数的形参为int型
再与
结合表示 p指向的这个函数的返回类型是指针类型
再与(int)结合表示这个函数返回的指针指向一个int形参的函数类型
再与int结合 表示这个函数返回指针指向的函数的返回值是int类型

总结
读懂就是在了解一些优先级的的情况下一步一步解刨
【】()> .
注意当分析到很复杂的时候可以采用分开的方法分析
例如 函数 可以从返回值再重新入手,不一定要还是要走变量读起
数组可以从数组元素的类型入手
分开分析完后再连到一起写出p变量的解释

  • 4
    点赞
  • 10
    收藏
    觉得还不错? 一键收藏
  • 5
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论 5
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值