首页 诗词 字典 板报 句子 名言 友答 励志 学校 网站地图
当前位置: 首页 > 教程频道 > 开发语言 > C语言 >

这两个为什么相等?该怎么处理

2012-03-09 
这两个为什么相等?#include stdio.hvoidmain(){inta[2][3]{{1,2,3},{3,2,1}}printf( a[1]%lx\n ,a[

这两个为什么相等?
#include <stdio.h>

void   main()
{
int   a[2][3]={{1,2,3},{3,2,1}};
printf( "a[1]=%lx\n ",a[1]);
printf( "&a[1]=%lx\n ",&a[1]);
}

输出是相等的:

a[1]=12ff74;
&a[1]=12ff74;

说明a[1]==&a[1],为什么呢?

[解决办法]
a[1]是一个地址,这是在编译时就确定了的
&a[1]取地址是在运行是确定的.
两种情况并不冲突的.我们不能简单的把a[1]就理解为一个地址,&a[1]又对这个地址再取地址.
这样理解比较合适:
a[1]是取数组的第一个元素的地址,&a[1]也是取数组第一个元素的地址,不过是一个在编译时确定的,一个是在运行是确定的.

热点排行