C++中指针的算术运算的问题

#include<iostream.h>voidmain(){inta[5]={1,2,3,4,5};int*pa,*pb;//pa=&a[0];//*pa=a[0]=1... #include <iostream.h>
void main()
{
int a[5]={1,2,3,4,5};
int *pa,*pb;
//pa=&a[0];//*pa=a[0]=1
pa=a;
pb=&a[4];
cout<<"*pa="<<*pa<<endl;
cout<<"*pb="<<*pb<<endl;
pa=pa+2; //指针与整数的相加运算
cout<<"pa+1="<<*pa<<endl;
pa=pa++; //指针加1运算
cout<<"pa++="<<*pa<<endl;
int c=pb-pa; //指针的相减运算
cout<<"pb-pa="<<c<<endl;
}

第一个问题是第七行pa=a为什么代表pa=&a[0]
第二个问题是第十一行是pa=pa+2为什么到下一行就是输出pa+1=了,与指针的字节有关吗还是程序错了?
展开
 我来答
五色墨盒
2009-07-25 · TA获得超过529个赞
知道答主
回答量:143
采纳率:0%
帮助的人:0
展开全部
第一个问题,
pa=a,是把数组a 的起始地址赋值给pa,数组a 的起始地址就是首元素a[0]的地址,所以pa=a与pa=&a[0]等同。

第二个问题,
应该是书上印错了。
312923469
2009-07-25 · TA获得超过2189个赞
知道小有建树答主
回答量:4814
采纳率:23%
帮助的人:662万
展开全部
因为pa是指针。a是数组默认a为第一个元素的地址。
他输出的本来就是第三个元素啊,没问题。开始输出的是1,第一个元素。只是你自己在写12行的时候写成pa+1了,应该是pa+2
已赞过 已踩过<
你对这个回答的评价是?
评论 收起
吹死牛
2009-07-25 · 超过18用户采纳过TA的回答
知道答主
回答量:36
采纳率:0%
帮助的人:51.4万
展开全部
数组名称就是指向数组第一个位置的指针,所以pa=a代表pa=&a[0]
第二个问题貌似是程序错了,我运行了输出是3是pa+2
已赞过 已踩过<
你对这个回答的评价是?
评论 收起
收起 更多回答(1)
推荐律师服务: 若未解决您的问题,请您详细描述您的问题,通过百度律临进行免费专业咨询

为你推荐:

下载百度知道APP,抢鲜体验
使用百度知道APP,立即抢鲜体验。你的手机镜头里或许有别人想知道的答案。
扫描二维码下载
×

类别

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

说明

0/200

提交
取消

辅 助

模 式