关于C语言中指针和数组名的一些疑惑

#include<stdio.h>intmain(void){doublearry[3]={2,5,7};double*p;p=arry;printf("arry的地址=... # include<stdio.h>

int main (void)
{
double arry[3]={2,5,7};
double *p;
p = arry;
printf("arry的地址 = %p\n",arry);
printf("p的地址 = %p\n",p);
return 0;
}
这里输出的结果是
arry的地址 = 0018FF30
p的地址 = 0018FF30

p是一个指针变量,而arry是一个数组名也就是一个指向数组的首地址的指针。如果让p=arry应该是表示p的内存单元里面存放的内容是arry的地址,而不是p的地址等于arry的地址。但是为什么这里的输出结果中p的地址和arry的地址是相等的?
展开
 我来答
cdyzxy
2014-04-02 · TA获得超过2.1万个赞
知道大有可为答主
回答量:1.4万
采纳率:85%
帮助的人:3739万
展开全部
编译程序将array数组的起始地址记录下来,你程序中用到array时就会用这个起始地址进行替换,也就是说array是这个数组起始地址的别名,array并不是变量只是个名称,具体变量为array[0],array[1],array[3]
p=array;就是用这个起始地址赋值给变量p,也可以写成p=&array[0];
已赞过 已踩过<
你对这个回答的评价是?
评论 收起
庄政警
2014-04-02 · TA获得超过9916个赞
知道大有可为答主
回答量:1113
采纳率:94%
帮助的人:883万
展开全部
p的地址是 &p
printf("p的地址 = %p\n",&p); //这样输出的才是p的地址
已赞过 已踩过<
你对这个回答的评价是?
评论 收起
zjfaok
2014-04-02 · TA获得超过6806个赞
知道大有可为答主
回答量:4146
采纳率:62%
帮助的人:1616万
展开全部
printf("p的地址 = %p\n",p);

为什么会觉得这是输出p的地址,总觉得这行代码的作用应该是输出(按问题中的说法)“p的内存单元里面存放的内容”才对

本回答被提问者采纳
已赞过 已踩过<
你对这个回答的评价是?
评论 收起
收起 更多回答(1)
推荐律师服务: 若未解决您的问题,请您详细描述您的问题,通过百度律临进行免费专业咨询

为你推荐:

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

类别

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

说明

0/200

提交
取消

辅 助

模 式