通常一个变量'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.