int main()
{
int a[3]={1,10,20};
printf("%u %u %u \n" ,&a,a,&a[0]);
return 0;
}
这将为所有三个打印相同的值。
我知道 a 和 &a[0] 是相同的,但 &a 怎么也相同?
为了获得最大的兼容性,您应该始终使用%p
并显式转换为void*
打印指针值printf
.
当数组的名称在表达式上下文中使用而不是作为操作数时sizeof
或一元&
它衰减为指向其第一个元素的指针。
这意味着a
and &a[0]
具有相同的类型(int*
)和值。&a
是数组本身的地址,因此具有类型int (*)[3]
。数组对象从其第一个元素开始,因此数组第一个元素的地址将与数组本身的地址具有相同的值,尽管表达式&a[0]
and &a
有不同的类型。
本文内容由网友自发贡献,版权归原作者所有,本站不承担相应法律责任。如您发现有涉嫌抄袭侵权的内容,请联系:hwhale#tublm.com(使用前将#替换为@)