以下两种参数类型有什么区别?第一个接受一个指针,它实际上是一个内存地址,第二个也是一个内存地址?
foo(float& bar)
{
// do stuff
}
foo(float* bar)
{
// do stuff
}
Run Code Online (Sandbox Code Playgroud)
你能不能同时打电话:
float pow = 3.0f;
foo(&pow);
Run Code Online (Sandbox Code Playgroud)
要么
float* pow = 3.0f;
foo(pow);
Run Code Online (Sandbox Code Playgroud)
Ail*_*lyn 12
指针可以是NULL,而引用则不能.如果您NULL因任何原因需要传递对象,这可能很有用.
使用指针语法,在调用函数时传递指针.使用引用,您只需传递变量:
refer(float& bar) {}
point(float* bar) {}
float afloat = 1.0f;
refer(afloat);
point(&afloat);
Run Code Online (Sandbox Code Playgroud)
这意味着使用指针语法时,必须在调用函数时传递指针.使用引用语法,您不知道函数是通过引用还是通过值来获取它而不查看函数定义.
使用引用语法,您不必取消引用函数中的指针,并在您的// do stuff部分中更自然地使用它 .
foo(float& bar)
{
bar = 3.0f;
}
// versus
foo(float* bar)
{
*bar = 3.0f;
}
Run Code Online (Sandbox Code Playgroud)| 归档时间: |
|
| 查看次数: |
2216 次 |
| 最近记录: |