下面两种参数类型有什么区别?第一个接受一个指针,实际上是一个内存地址,第二个也是一个内存地址?
foo(float& bar)
{
// do stuff
}
foo(float* bar)
{
// do stuff
}
你能不能同时调用:
float pow = 3.0f;
foo(&pow);
或
float* pow = 3.0f;
foo(pow);
最佳答案
指针可以是
NULL
,而引用不能。如果您出于任何原因需要传递一个NULL
对象,这会很有用。使用指针语法,您可以在调用函数时传递一个指针。使用引用,您只需传递变量:
refer(float& bar) {} point(float* bar) {} float afloat = 1.0f; refer(afloat); point(&afloat);
这意味着使用指针语法时,您必须在调用函数时传递指针。使用引用语法,如果不查看函数定义,您将不知道函数是通过引用还是通过值来获取它。
使用引用语法,您不必在函数中取消引用指针,并在
//do stuff
部分更自然地使用它。foo(float& bar) { bar = 3.0f; } // versus foo(float* bar) { *bar = 3.0f; }
关于c++ - & 和 * 作为参数的区别,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/7676878/