数组名其实是一个指针常量,而不是变量。它不允许被赋值。

&a == a 成立,这是由编译器保证的。对数组名使用 & 运算符,通常是为了取数组中元素的地址,而不是数组的地址。

a == &a[0] 成立,是 c 语法保证的。


另外使用反汇编去看这些信息,往往看到的是编译器优化过的,不但不能帮助理解,反而容易引起混淆。




2009/11/7 刘小林 <[email protected]>

> 十分感谢你的回答,我受益匪浅。谢谢。
>
> 2009/11/7 nafish <[email protected]>:
> >
> >
> >
> > 在2009-11-03 16:33:21,"刘小林" <[email protected]> 写道:
> >>有哪位朋友可以讲讲数组名取地址的问题?在网上看了很多说法,实在是总结不出来个究竟。
> >>很明显,如今的编译器(只考察了VC++ 2008和GCC 3.4.5)是支持数组名取地址的,那么对数组名取地址到底会得到什么?
> >>
> >>>
> >
> >
> > ________________________________
> > 09年新晋3D主流网游《天下贰》,网易六年亿资打造
> > >
> >
>
> >
>

--~--~---------~--~----~------------~-------~--~----~
 要向邮件组发送邮件,请发到 [email protected]
 要退订此邮件,请发邮件至 [email protected]
-~----------~----~----~----~------~----~------~--~---

回复