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
那我说的那个是等价的吗
是的
已赞过
评论
收起
你对这个回答的评价是?