二维数组,为什么printf("a:%p \n",a); printf("*a:%p \n",*a);输出一样

xunyingren 2009-03-27 11:29:49
#include<iostream>
using namespace std;
void show( const int *b)
{
cout<<*b<<endl;
}
int main ()
{
int a[3][2]={0},(*ptr)[2],i,j;
ptr=a;
printf("ptr:%p \n",ptr);
printf("a[0][0]:%p \n",&a[0][0]);
printf("a:%p \n",a);
printf("*a:%p \n",*a);
printf("a[0]:%p \n",a[0]);

system("pause");
return 0;
}
printf("*a:%p \n",*a);
printf("a[0]:%p \n",a[0]);
因*a ==a[0],所以输出相同

但为什么
printf("a:%p \n",a);
printf("*a:%p \n",*a);
输出的是同一个值???
...全文
314 6 打赏 收藏 转发到动态 举报
写回复
用AI写文章
6 条回复
切换为时间正序
请发表友善的回复…
发表回复
xinhua0910 2009-03-27
  • 打赏
  • 举报
回复
[Quote=引用 1 楼 A_B_C_ABC 的回复:]
因为a是二维数组名,a和*a只是类型不同,但都代表那段内存的起始地址,所以输出他的值是一样的。
[/Quote]正解,数组名就是数组的首地址
liantian555 2009-03-27
  • 打赏
  • 举报
回复
*a与a都指示数组首地址
0黄瓜0 2009-03-27
  • 打赏
  • 举报
回复
因为a是二维数组名,a和*a只是类型不同,但都代表那段内存的起始地址,所以输出他的值是一样的。
fairchild811 2009-03-27
  • 打赏
  • 举报
回复
都代表首地址,a[0]和a[][]

虽然一个是2维,一个是1维
honghaixiao 2009-03-27
  • 打赏
  • 举报
回复
mark
  • 打赏
  • 举报
回复
a是2维指针,*a是一维指针。但是a[0]的地址跟a[0][0]是一样的

65,211

社区成员

发帖
与我相关
我的任务
社区描述
C++ 语言相关问题讨论,技术干货分享,前沿动态等
c++ 技术论坛(原bbs)
社区管理员
  • C++ 语言社区
  • encoderlee
  • paschen
加入社区
  • 近7日
  • 近30日
  • 至今
社区公告
  1. 请不要发布与C++技术无关的贴子
  2. 请不要发布与技术无关的招聘、广告的帖子
  3. 请尽可能的描述清楚你的问题,如果涉及到代码请尽可能的格式化一下

试试用AI创作助手写篇文章吧