我正在学习C,但是遇到的问题之一我无法完全理解。问题是,如果使用->运算符返回,可能会出什么问题。因此,如果代码最初是这样做的:
myVariable = foo->bar;
return myVariable;
,然后将其更改为:
return foo->bar;
出什么问题了?看来还是应该可以,所以我不确定为什么会出问题。
答案 0 :(得分:0)
您正在从一次性变量转换为直接返回该变量。这是允许的,在这种情况下更可取,因为这样可以避免为myVariable
声明错误的类型而导致任何潜在的错误。
在->
的上下文中,return
没什么特别的。您可以返回任何表达式,诸如->
之类的东西可以成为表达式的一部分。
如果您好奇,可以阅读C specification的说明:
return [ expr ] ';'
因此,这意味着如果foo->bar
是有效的表达式(例如,这是一段可编译的代码),那么return foo->bar;
也是有效的。您的代码暗示foo
是某种指向具有bar
作为属性的对象的指针。如果不是这种情况,那么这两个版本都不会起作用。这也取决于相关函数的返回类型与该属性的类型相匹配。