伙计们!
为什么我不能取“t”变量的地址?
flygs->type == 'X' ? t = a_ib_u(u->us, 16) : (a_lowcasealph(&(t = a_ib_u(u->us, 16))));
\\a_ib_u returns *char, a_lowcasealph take **char argument
错误:无法获取“char*”类型的rvalue的地址
最佳答案
你实际上没有在这里取变量的地址:
&(t = a_ib_u(u->us, 16))
这里有一个表达式,它是赋值运算符,其值是赋值。这与获取变量的地址不同。如注释中所述,变量是左值,而包含一个或多个运算符的表达式是右值。你只能取左值的地址。
要解决此问题,可以使用逗号运算符:
flygs->type == 'X' ? t = a_ib_u(u->us, 16) :
a_lowcasealph(((t = a_ib_u(u->us, 16)), &t));
请注意,逗号运算符表达式周围需要一对额外的括号,以防止将逗号解释为函数参数的分隔符。
关于c - 为什么我不能接受变量的地址?,我们在Stack Overflow上找到一个类似的问题:https://stackoverflow.com/questions/47714244/