int (*p)[4]与int *p[4]

int (*p)[4]
因为小括号()的优先级最高,所以先考虑小括号,即p先和 * 结合,所以p的本质是一个指针,再与方括号[ ]结合,即[ ]描述了p的性质——p是一个指针,它指向的是一个数组,这个数组有4个元素,元素是int类型的。即p是指向长度为4的数组的指针。
p也可以理解成p[][4],一个n行4列的二维数组。
那么p的值为二维数组首地址,
p值为二维数组首行首地址(与p相同),
**p才是首元素的值(与p相同)。
*( *(p+m)+n)指二维数组第m行,n列元素的值

	int arr[2][5] = {1,2,3,4,5,6,7,8,9,10};
	int(*p)[5] = arr;//定义一个指针数组,将指针首地址指向arr
	cout << (int)arr << endl;//地址:9698080--第一行首地址
	cout << (int)(*(p+1)) << endl;//9698100--第二行首地址
	cout << (int)(*(p)+1) << endl;//9698084--第一行第二列地址
	cout << *(*(p+1)+1) << endl;//取第二行第二列元素

int *p[4]
因为[ ]的优先级高于 * ,所以先考虑 [ ] ,即p先和 [ ]结合,所以p的本质是一个数组,再与 * 结合,即 * 描述了p的性质——p是一个数组,数组里装的元素是4个指针,指针是int型的。

int (*p)[5],

所以,你的(*array), array, a值相同。均是首地址。

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

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

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

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值