int a[10]={1,2,3,4,5,6,7,8};int *p;p=&a[5];p=[-3]的值是多少?以及为什么?谢谢啊
发布网友
发布时间:2022-05-12 05:35
我来回答
共4个回答
热心网友
时间:2023-11-22 04:06
#include<iostream>
using namespace std;
int main()
{
int a[10]={1,2,3,4,5,6,7,8};//a[8],a[9]默认初始化为0
int *p;
p=&a[5];//指针p现在指向数组a中的第六个即a[6];
//p[-3]即表示指针p向前移动三个单位,也就是a[2],注意实际地址变量的值不变,p仍是只想a【5】
cout<<p[-3]<<endl;//输出3
cout<<p[2]<<endl;//p想后移动两个单位,输出8
return 0;
}
加分吧,哥们,很辛苦的,嘿嘿追问谢谢啦,
热心网友
时间:2023-11-22 04:07
p=[-3],这个不会出错?
如果是p[-3]就是3;因为为是把数字6的地址给p了,p[-3]就是在a[5]地址上减3,指到 a[2],a[2]的值是 3追问不会呀,“-“应该是指左对齐吧,想知道值是多少?
追答p[-3]的值是3,详细看上面修改的回答
热心网友
时间:2023-11-22 04:07
按照p[0]=a[5],p[-3]=a[2];也就是a[2]=3;追问p不是应该是指地址,*p才指地址里存的内容吗?谢谢
追答*(p+2)与p[2]等价,*(p+0)与p[0]等价
谭浩强的书应该有这个知识点
热心网友
时间:2023-11-22 04:08
p[0]是指当前指向的元素,p[-3]就是指前面第三个元素