假设您有一个修改变量的函数。
你应该这样写:void myfunc(int *a)
还是这样void myfunc(int &a)
?
前者强制你用 myfunc(&b)
调用函数,所以调用者知道 b
将被修改,但后者更短,可以调用只需使用 myfunc(b)
。那么哪个更好用呢?我还缺少什么吗?
最佳答案
指针(即'*')应该用在传递“NULL”有意义的地方。 例如,您可以使用 NULL 来表示需要创建特定对象,或者不需要执行特定操作。 或者,如果需要从非 C++ 代码调用它。 (例如,用于共享库)
例如。 libc函数time_t时间(time_t *result);
如果result
不为NULL,则存储当前时间。但如果 result
为 NULL,则不采取任何措施。
如果您正在编写的函数不需要使用 NULL 作为有意义的值,那么使用引用(即“&”)可能不会那么困惑 - 假设这是您的项目使用的约定。
关于C++ 函数 : ampersand vs asterisk,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/670101/