通常一个变量'abc'可以被寻址为'&abc'。
c语言中有哪些变量不能处理?为什么?
* C99 标准的第 6.5.3.2 节(强调我的)解决了这个问题:
一元运算
&符的操作数应该是一个函数指示符、一个[]或一元运算符的结果*,或者是一个左值,它指定一个不是位域且未使用register存储类说明符声明的对象。
C中的寄存器变量无法寻址的原因可以在这里找到:
Register variable can not be accesses by this way. A register does not have an address. Therefore, you cannot apply the address operator (&) to a register variable.