int main() { int a[4]={0,1,2,3}; int (*p)[4]=&a; cout<<p<<endl; cout<<*p<<endl; return 0; }

为什么p和*p的输出都一样?... 为什么p和*p的输出都一样? 展开
 我来答
zxpointer
2011-07-26 · TA获得超过4102个赞
知道大有可为答主
回答量:1868
采纳率:33%
帮助的人:1212万
展开全部
关健是这条语句:int (*p)[4]=&a;
这个是一个数组指针,可以这样分析:
看变量p ,先与*结合说明 p是一个指针,然后(*p)再与[]结合 说明指针指向的是一个数组
[4]说明p指向的这个数组含有4个元素
最后和int结合说明p是一个数组指针,它指向一个拥有4个元素的整型数组
而在定义的同时对其初始化&a也就是把a的地址给了p,相当于p指向了a
这样*p的指就是p所指向的内存地址中的址,由于它是一个数组指针,它指向的内存单元中存放的仍然是一个地址,在此即为a的地址。
而p的话由于p指向了a,因此p的值也是a的地址。
你仔细想想其它两者有区别,虽然数值都一样,但p代表着存放p这个内存单元中存放的值,而*p呢是它指向的内存地址中存放的值。
至于还有个&p就是p的存放地址了,这个和p和*p都没关系
匿名用户
2011-07-27
展开全部
输出:2
p=&a[1][1];
for(i=0;i<4;i++) p[i]=i+1;这两行语句表示对二维数组a的部分内容进行初始化化,值为i+1,初始化之后数组的内容为:
0 1 2
0 x x x
1 x 1 2
2 2 4 x
所以printf("%d\n",a[1][2]);的输出值为2
另外,站长团上有产品团购,便宜有保证
已赞过 已踩过<
你对这个回答的评价是?
评论 收起
397090770
2011-07-26 · TA获得超过297个赞
知道答主
回答量:114
采纳率:0%
帮助的人:68.4万
展开全部
因为那是数组,输出来的都是数组的首地址,。
已赞过 已踩过<
你对这个回答的评价是?
评论 收起
红颜若泪
2011-07-26 · TA获得超过127个赞
知道答主
回答量:92
采纳率:0%
帮助的人:51.5万
展开全部
*P是指针,指向的是P。当然输出的是P的值
已赞过 已踩过<
你对这个回答的评价是?
评论 收起
收起 更多回答(2)
推荐律师服务: 若未解决您的问题,请您详细描述您的问题,通过百度律临进行免费专业咨询

为你推荐:

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

类别

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

说明

0/200

提交
取消

辅 助

模 式