通过指针而不是通过引用访问struct成员之间有什么区别?

时间:2014-08-10 07:49:45

标签: c++ pointers struct

在“C ++编程语言(第4版)”第2.3.1节中,Stroustrup显示了访问struct成员的3种不同方法:

void f(Vector v, Vector& rv, Vector* pv)
{
    int i1 = v.sz;    // access through name
    int i2 = rv.sz;   // access through reference
    int i4 = pv->sz;  // access through pointer
}
  1. 我理解第一个,v是值传递的,所以第一个参数的副本放在函数的堆栈上,其大小sz的值存储在里面i1
  2. 在第二个示例中,rv是对作为第二个参数传递的结构的引用。由于它是引用,因此我们可以访问rv引用的值,而不使用*前缀。
  3. 我不太清楚我理解i4发生了什么,以及为什么有人会在第二个例子中选择第三个例子(反之亦然)。

0 个答案:

没有答案