指针与数组的关系

指针与数组的关系(初学者勿看)

如下代码:

在这里插入图片描述
为什么b[10] = a; 是错误的,但是p = a;且正确呢?
我们都知道数组自带一个地址并且这个地址是首地址即&a[0];
在这里插入图片描述他们的地址都是相同的,但你们发现没有:a是数组名,p是指针当p指向a后:p[0] <> a[0];
但是 b[10] = a;就不行;
为什么呢?
因为数组变量是一个const的指针,因此不能被赋值
如: int a[] <
>int const a;
我们都知道常量不能赋值,为什么呢?
就如int a[],其中的a本身就是一个地址;
如果你进行赋值的话那你的内存中将存在两个想同地址区域,显然这是不可能的。
假如int b[];b的地址是0x1,int a[];a的地址是0x2;
如果 b = a;那么内存中将存在两个0x2内存存储区域。
还有就是由于
p代表的是首地址,那么他指向一个普通变量min的时候 *p[0] <==> min< ==> p;
指向普通变量的时候不过是吧min当做一个只有一个元素的数组。但是普通变量并不代表一块内存区域,min就不代表一块内存区域的首地址,因此 p指向min的时候仍要取地址
如:在这里插入图片描述

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值