在C中的return语句中使用->运算符

时间:2019-02-26 02:19:03

标签: c function return

我正在学习C,但是遇到的问题之一我无法完全理解。问题是,如果使用->运算符返回,可能会出什么问题。因此,如果代码最初是这样做的:

myVariable = foo->bar;
return myVariable;

,然后将其更改为:

return foo->bar;

出什么问题了?看来还是应该可以,所以我不确定为什么会出问题。

1 个答案:

答案 0 :(得分:0)

您正在从一次性变量转换为直接返回该变量。这是允许的,在这种情况下更可取,因为这样可以避免为myVariable声明错误的类型而导致任何潜在的错误。

->的上下文中,return没什么特别的。您可以返回任何表达式,诸如->之类的东西可以成为表达式的一部分。

如果您好奇,可以阅读C specification的说明:

return [ expr ] ';'

因此,这意味着如果foo->bar是有效的表达式(例如,这是一段可编译的代码),那么return foo->bar;也是有效的。您的代码暗示foo是某种指向具有bar作为属性的对象的指针。如果不是这种情况,那么这两个版本都不会起作用。这也取决于相关函数的返回类型与该属性的类型相匹配。