注册 登录
编程论坛 C++教室

[求助]指针问题

xbw0114 发布于 2007-10-05 18:12, 449 次点击

int s[]={1,2,3,4,5,6};
int *P=s;
cout<<*(p+(*p+1));
请问为什么输出结果是3呀?

5 回复
#2
chen78062007-10-05 18:31
*P+1=2.因为*P为初始值1;

*(P+2)等于数组下标为2[0+2]的值。所以为3。
#3
xbw01142007-10-05 18:37
恩,明白,多谢咯~~
#4
夜子2007-10-05 18:49
#include<iostream>
using namespace std;
void main()
{
int s[]={1,2,3,4,5,6};
int *p=s;
cout<<*(p+(*p+1));
}
这个是对应的C++代码。这里这样分析:
首先p是一个int *指针,*p值是s[0],即1;然后*p+1值为2;那么*(p+(*p+1))就是*(p+2)就是p[2];所以是3啊
#5
jonc2007-11-02 17:12
int s[]={1,2,3,4,5,6};
int *P=s;
cout<<*(p+(*p+1));
其中*p是指取s[]的第一个值1
所以*p+1=2
而p是s[]的首地址
所以p+2就是取s[2]的值3
#6
shlg12292007-11-02 17:14
这种题目好无聊~~~~
1