函数可以返回联合的成员吗?
如果是这样,那么我应该如何声明函数的返回类型以及如何在函数的定义中生成return语句?
(实际上,我对此有一系列问题,但除非之前的回答,否则它们都没有意义。所以这是第一个......)
答案 0 :(得分:5)
没有。联盟的成员是一个对象。函数只能返回值。
您可以返回一个值,该值是union的成员值。为此,函数的返回类型只是成员的类型。
函数可以返回整个联合(按值)。为此,函数的返回类型是union类型。
函数可以返回一些值,告诉调用者当前正在使用联合的哪个成员(例如,0表示第一个成员,1表示第二个成员)。为此,函数的返回类型是您选择对信息进行编码的某种类型(例如int
)。
函数也可以返回指针。这些通常用作对象的代理:由于无法返回实际对象,因此返回指向对象的指针,调用者可以使用指针访问对象。函数可以返回指向union成员的指针或指向union的指针。 (这可能有问题:指针返回的对象必须是在函数返回后继续存在的对象。因此它不能是在函数内部创建的自动对象。)