在“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
}
v
是值传递的,所以第一个参数的副本放在函数的堆栈上,其大小sz
的值存储在里面i1
。rv
是对作为第二个参数传递的结构的引用。由于它是引用,因此我们可以访问rv
引用的值,而不使用*
前缀。我不太清楚我理解i4
发生了什么,以及为什么有人会在第二个例子中选择第三个例子(反之亦然)。