-5

我正在为我的考试复习一次模拟考试,纸上的一个问题让我感到困惑。

Q.)应用程序需要将结构传递给函数,该函数将修改结构的内容,以便在从函数调用返回时,调用者可以使用新的结构值。你会通过值、地址或引用将结构传递给函数吗?

清楚地说明您选择特定方法的原因。通过比较这三种方法来证明您的选择。

现在我很难理解这一点,因为我认为问题的最佳答案总是由 Ref 提供,因为它获取值的引用指针并编辑其内容,而不仅仅是获取副本。如果使用基于类的程序,情况会有所不同。

我能理解的唯一另一种方法是拥有一个单独的值并获取和设置这些值,但这意味着额外的代码行,我有点不确定这意味着什么,谁能帮助启发我?我不知道有任何其他方法可以实现这一点。

4

1 回答 1

0

这不是“高级编程”;它是 C++ 的绝对基础。

对于任何给定的用例,按值返回或“输出”参数(使用引用或指针实现)是否“最佳”取决于许多因素,风格和意见只是其中两个。

// Return by value
//  T a; a = foo(a);
T foo(const T& in)   // or:   T foo(T in)
{                    //       {
   T out = in;       // 
   out.x = y;        //          in.x = y;
   return out;       //          return in;
}                    //       }

// Out parameter (reference)
//  T a; foo(a);
void bar(T& in)
{
   in.x = y;
}

// Out parameter (pointer)
//  T a; foo(&a);
void baz(T* in)
{
   in->x = y;
}

问题是问你这三种方法的优缺点是什么。

于 2016-01-18T14:17:25.113 回答