int a[10]={1,2,3,4,5,6,7,8};int *p;p=&a[5];p=[-3]的值是多少?以及为什么?谢谢啊

希望能说一下p[-3]是什么?谢谢!

#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;
}
加分吧,哥们,很辛苦的,嘿嘿追问

谢谢啦,

温馨提示:内容为网友见解,仅供参考
第1个回答  2012-06-08
p=[-3],这个不会出错?
如果是p[-3]就是3;因为为是把数字6的地址给p了,p[-3]就是在a[5]地址上减3,指到 a[2],a[2]的值是 3追问

不会呀,“-“应该是指左对齐吧,想知道值是多少?

追答

p[-3]的值是3,详细看上面修改的回答

第2个回答  2012-06-08
按照p[0]=a[5],p[-3]=a[2];也就是a[2]=3;追问

p不是应该是指地址,*p才指地址里存的内容吗?谢谢

追答

*(p+2)与p[2]等价,*(p+0)与p[0]等价
谭浩强的书应该有这个知识点

本回答被提问者采纳
第3个回答  2012-06-08
p[0]是指当前指向的元素,p[-3]就是指前面第三个元素

...*p;p=&a[5];p=[-3]的值是多少?以及为什么?谢谢啊
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;...

...int a[10]={1,2,3,4,5,6,7,8,9,10}; int *p=&a[3],b;b=p[5...
p指向a[3],即4。p[5]=*(p+5).对应关系 p 4 p+1 5 ………p+5 9

...int a[10] = {1, 2, 3, 4, 5, 6, 7, 8, 9, 10}, *p = &a[3...
include <stdio.h>int main(){int a[10] = { 1, 2, 3, 4, 5, 6, 7, 8, 9, 10 }, *p = &a[3], b; b = p[5];printf("%d\\n", b);} 因为*p=&a[3]; 表明将a[3]的地址赋值给p,此时p[0]=a[3],因此p[5]=p[0+5]=a[3+5]=a[8]。

{ int a[10]={1,2,3,4,5,6,7,8,9,10},*p=&a[3],*q=p+2; printf("%d\\n...
p=a[3]=4 q=a[5]=6 输出10

main() {int a[10]={1,2,3,4,5,6,7,8,9,0},*p; p=a; printf("%x\\n",p...
结果是两个地址值(以十六进制显示出来),其中第一个是a[0]的地址,因为*p=a[0], p=&a[0], 即指针p指向的是数组a的首地址(即a[0]的地址)。望采纳

设有语句:int a[10]={0,1,2,3,4,5,6,7,8,9},i,*p=a;,
答案是D,D的正确形式应该为:*(a+i)前面多了个星号。A:a[0]B: a[i]C: p[i]

int a[10] = {1 , 2 , 3 , 4 , 5 , 6 , 7 , 8 , 9 ,
p=&a[3]就是p指向了a[3],然后p[5]=>*(p+5)就是在a[3]的地址上再往后移动5个,就是a[8]了,当然就是9的值了,答案就是D

int a[10]={1,2,3,4,5,6,7,8,9,10},*p=&a[a] p+5 刚*P为() A.6 B...
选C,应指向8\/ include<stdio.h> void main(){ int a[10]={1,2,3,4,5,6,7,8,9,10};int *p=&a[2]printf("%d\\n",*(p+5));} 这里a[2]是一个下标变量,由于地址是从a[0]开始的,所以a[2]的值其实是3,P指向的位置+5位,正好是8,谢谢!

main() { int a[10]={1,2,3,4,5,6,7,8,9,10}, *p=a; printf(〃%d\\n...
(p+2)就是先把P指向的地址后移两个单位,P初始化指向a数组首地址,后移两个单位后即 a[2]= 3 ;

int a[10]={1,2,3,4,5,6,7,8,9,10};
D 是正确的。首先*p = &a[3]是将数组a[10]里的第四个数(下标从0开始,所以a[3]=4),那么p在内存中第一个指向的因该是4这个数,所以p[]={4,5,6,7,8,9,10},p[5]为数组中第六个数即9.上面的解释你应该明白了吧

相似回答