取消ANSI C中的*&

艾塞米尼

我们和一些朋友讨论了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

从技术上讲,*&aa不能完全在所有情况下等价的,在*&a没有在任何情况下在允许的情况a是(例如,如果a被声明为register),但在你的榜样,他们是完全一样的。

本文收集自互联网,转载请注明来源。

如有侵权,请联系[email protected] 删除。

编辑于
0

我来说两句

0条评论
登录后参与评论

相关文章