int *p[] 与int (*p)[] 的区别

本文详细解析了int*p[]与int(*p)[]的区别,通过分析运算符优先级揭示了两者在内存中存储方式的不同。前者为指向int类型指针的数组,后者则表示一个指向int类型数组的指针。

摘要生成于 C知道 ,由 DeepSeek-R1 满血版支持, 前往体验 >

这里我们简单看看int *p[] 与int (*p)[] 的区别:

这里最重要的是* 与[]操作符的运算优先级

显然 [] 的优先权高于 * ,所以int *p[] 它首先是一个p[],是个int 数组,然后我们可以将p[]看做一个整体,用T代替,那么int *p[]就相当于int * T,而T中的元素存储的是int * 数据,所以int *p[]存储中p存储的是int *型数据,即p是一个存储int * 型指针的数组,也就是说p这个数组中存储的元素是地址


我们再来看看 int (*p)[],这里我们用()改变的操作符与p的结合顺序(“()”操作符拥有最高优先权),那么将*p看成一个整体F,则 int (*p)[]相当于int F[],也就是说F数组中存储的元素是int型的数据,而F本身是一个int型指针即int *,所以 int (*p)[]就是一个二维数组,存储的元素是int型数据


评论 1
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值