[英]Confusion over C++ pointer and reference topic
C ++中以下参数传递机制之间的区别是什么?
void foo(int &x)
void foo(int *x)
void foo(int **x)
void foo(int *&x)
我想知道在哪种情况下参数是通过值传递还是通过引用传递。
void foo(int &x)
将引用传递给整数。 这是一个输入/输出参数,可以像函数中的常规整数一样使用。 值被传回给调用者。
void food(int *x)
将指针传递给整数。 这是一个输入/输出参数,但其用法类似于指针,必须取消引用(例如*x = 100;
)。 您还需要检查它是否不为空。
void foo(int **x)
将指针传递给指向整数的指针。 这是整数指针类型的输入/输出参数。 如果要更改整数点的值,请使用此值(例如*x = &m_myInt;
)。
void foo(int *&x)
将引用传递给指向整数的指针。 像上面一样,但无需取消引用指针变量(例如x = &m_myInt;
)。
希望有道理。 我建议使用typedefs来简化指针和引用符号的使用。
只需补充:我认为您的间距会误导您。 如果您进行更改,情况可能会变得更加清晰。
,&,*等是该类型的一部分,因此请保留该类型:
void foo(int& x)
void foo(int* x)
void foo(int** x)
void foo(int*& x)
int&是对int的引用,int *是对int的指针,int **是对int的指针,依此类推。 您仍然需要从右到左读取类型-int *&是对指向int的指针的引用。 但这是一致的。
我认为这更容易阅读,代表的含义更好。
声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.