【发布时间】:2014-10-10 21:24:26
【问题描述】:
我们和一些朋友讨论了 ANSI C 中这个简单的以下代码的正确性。
#include <stdio.h>
int main(void)
{
int a=2;
printf("%d", *&a);
return 0;
}
主要讨论是关于*&。如果 * 访问一个内存位置(又名指针)并 & 给出某个变量的内存地址...我认为 * 尝试访问一个 int 值作为内存地址(这显然不起作用),但我的朋友说 *& 它取消了自动(或解释为 &*)。我们使用 GCC 4.8.1 (MinGW) 对其进行了测试,并且代码 avobe 运行良好......我认为这是不对的。
你怎么看?认为这里有一个不好的解决方法(或者这只是愚蠢?)。感谢您的建议:)
【问题讨论】:
-
当然...我知道可以减少它,但这就是我问这个的原因。在某些特定的内存情况下,可能会导致一些错误的编译器解释。
-
您可能正在考虑按
&*的顺序组合运算符的潜在问题,这已在 SO 上多次讨论过,包括此处的详细答案:stackoverflow.com/a/2896975/12711