C——数组指针

  • 为什么px 与*px的地址值是一样的?
#include "stdafx.h"

int main(int argc, char* argv[])
{
	int arr[16] = { 1,2,3,4,5,6,7,8,9,10,11,12,13,14,15,16 };
	int(*px)[2];
	
	//宽度:4
	printf("%d\n", sizeof(px));
	
	//赋值
	px = (int(*)[2])arr;
	
	
	printf("%d\n", px);
	
	px++;
	
	printf("%d\n", px);
	
	printf("%d %d\n",px,*px);
	
	//为什么px 与*px的地址值是一样的?
	//如果想取数组arr第一个值 1,必须写成printf("%d \n",**px);
	
	px++;
	
	printf("%d %d\n",px,*px+1);
	
	return 0;
}
  • px++后,px指向的是&arr[2]的地址,px和*px是一样的,但是类型不一样。px是int 类型,而px是int ()[2]类型。(px) + 1的偏移量是sizeof(int),但是px+1的偏移量是2 * sizeof(int); 因为px和px都是指针,不论是什么类型的指针,以及几维的指针,变量里存放的都是地址值,那么px和px都存放的是&arr[2]的地址,因此输出%p打印他们的地址值都是一样的,但类型不一样了。
  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

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

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

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值