关于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的地址是相等的? 展开
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的地址是相等的? 展开
3个回答
展开全部
编译程序将array数组的起始地址记录下来,你程序中用到array时就会用这个起始地址进行替换,也就是说array是这个数组起始地址的别名,array并不是变量只是个名称,具体变量为array[0],array[1],array[3]
p=array;就是用这个起始地址赋值给变量p,也可以写成p=&array[0];
p=array;就是用这个起始地址赋值给变量p,也可以写成p=&array[0];
已赞过
已踩过<
评论
收起
你对这个回答的评价是?
展开全部
p的地址是 &p
printf("p的地址 = %p\n",&p); //这样输出的才是p的地址
printf("p的地址 = %p\n",&p); //这样输出的才是p的地址
已赞过
已踩过<
评论
收起
你对这个回答的评价是?
展开全部
printf("p的地址 = %p\n",p);
为什么会觉得这是输出p的地址,总觉得这行代码的作用应该是输出(按问题中的说法)“p的内存单元里面存放的内容”才对
本回答被提问者采纳
已赞过
已踩过<
评论
收起
你对这个回答的评价是?
推荐律师服务:
若未解决您的问题,请您详细描述您的问题,通过百度律临进行免费专业咨询