伙计们!
为什么我不能取“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/

10-11 01:46