这两个为什么相等?
#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]也是取数组第一个元素的地址,不过是一个在编译时确定的,一个是在运行是确定的.