C语言一个奇怪的问题
请各位高手解释一下为什么会出现这种情况:
main()
{
int a[2][2]={1,2,3,4};
printf("%d",a);
printf("%d",*a);
printf("%d",&a[0][0]);
}/*此段程序三个输出的地址是一样的*/
main()
{
int a[2][2]={1,2,3,4};
printf("%d%d%d",a,*a,&a[0][0]);
}/*第一个和第三个地址一样,第二个不一样,,且是这三个参数位置不管怎么换还是第一个和第三个一样,第二个不一样*/
还有当后面的参数变为两个时,第一个是正确的,第二个和第一个对不上。
请问为什么会这样啊!!!!!!