int a[5],*p表达式a=a+2为什么是错的表达式p-a又为什么是对的

1个回答
展开全部
摘要 int *p;说明变量p要放置的不是整型数据而是指向整型数据的地址(整型指针)
p=a[2];不合法,因为变量a[2]存放的是整数而不是指针,编译程序遇到这种情况会报错:不匹配的数据类型赋值,p=a[2]+2;也就不合法了,因为a[2]+2的结果还是整数,合法的是要给p赋值成指向整型数据的地址,比如指向变量a[2]的地址:p=&a[2]; 则p=&a[2]+2;就是合法的了,意思是a[2]的地址再增加两个,指向a[4],即a[4]的地址赋值给p
咨询记录 · 回答于2021-12-01
int a[5],*p表达式a=a+2为什么是错的表达式p-a又为什么是对的
int *p;说明变量p要放置的不是整型数据而是指向整型数据的地址(整型指针)p=a[2];不合法,因为变量a[2]存放的是整数而不是指针,编译程序遇到这种情况会报错:不匹配的数据类型赋值,p=a[2]+2;也就不合法了,因为a[2]+2的结果还是整数,合法的是要给p赋值成指向整型数据的地址,比如指向变量a[2]的地址:p=&a[2]; 则p=&a[2]+2;就是合法的了,意思是a[2]的地址再增加两个,指向a[4],即a[4]的地址赋值给p
麻烦小主赞
p-a是什么意思呢
p指向70所在存储单元,a指向数组首地址p-a所得结果是70所在存储单元相对于数组开始位置的偏移量。因为,他们就是指向int型数据,所以也可以认为是70所在存储单元在a数组中的下标
麻烦小主赞
p=a[2]等价于a=a+2吗
*(p+2)等价于a【2】所以值为6,同理*(a+4)==a【4】==*(p+4)==p【4】为10
那我说的那个是等价的吗
是的
已赞过
你对这个回答的评价是?
评论 收起
下载百度知道APP,抢鲜体验
使用百度知道APP,立即抢鲜体验。你的手机镜头里或许有别人想知道的答案。
扫描二维码下载
×

类别

我们会通过消息、邮箱等方式尽快将举报结果通知您。

说明

0/200

提交
取消