我们和一些朋友讨论了ANSI C中以下简单代码的核心。
#include <stdio.h>
int main(void)
{
int a=2;
printf("%d", *&a);
return 0;
}
主要讨论是关于*&。如果*访问内存位置(又名指针)并且&给出了一些变量的内存地址...我认为*试图访问一个int值作为内存地址(这显然不起作用),但是我的朋友说*&它取消了自动(或解释为&*)。我们使用GCC 4.8.1(MinGW)对其进行了测试,并且avobe的代码运行良好……我认为这是不对的。
你有什么想法?认为这里有一个不好的解决方法(或者这仅仅是愚蠢?)。感谢您的建议:)
a
是左值:变量a
。
&a
是指向该左值的指针。
*&a
是&a
-所指向的左值a
。
从技术上讲,*&a
并a
不能完全在所有情况下等价的,在*&a
没有在任何情况下在允许的情况a
是(例如,如果a
被声明为register
),但在你的榜样,他们是完全一样的。
本文收集自互联网,转载请注明来源。
如有侵权,请联系[email protected] 删除。
我来说两句