C语言指针复杂声明解析

右左法则:首先从最里面的圆括号(未定义的标识符)看起,然后往右看,再往左看。每当遇到圆括号时,就应该掉转阅读方向。一旦解析完圆括号里面所有的东西,就跳出圆括号。重复这个过程直到整个声明解析完毕。

int p;
这是一个普通的整型变量

int *p;
首先从p处开始, 先与*结合. 所以p是一个指针, 然后再与int结合. 说明p指向的为int型. 所以p是一个指向整型的指针变量

int p[n];
首先从p处开始, 先与[]结合, 所以p是一个数组, 然后再与int结合, 说明数组的元素为int型, 所以p是由n个int型数据的数组.

int *p[n];
从p处开始, 先与[]结合([]的优先级比*高), 所以p是一个数组, 然后再与*结合,说明数组的元素是指针类型, 再与int结合,说明指针的类型为整型,所以p是由n个int型指针的数组.

int (*p)[n]
从p处开始, 括号里面先执行, 先与*号结合, 说明p是一个指针. 然后再与[]结合,说明p指向的是一个数组. 再与int结合. 说明数组元素的值为int型, 所以p是一个指向由n个元素的数组的指针.

int **p
首先p与*结合, 说明p是一个指针, 然后再与*结合,

  • 0
    点赞
  • 1
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

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

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

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值