C++ 函数 : ampersand vs asterisk

标签 c++ function pointers

假设您有一个修改变量的函数。

你应该这样写: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/

相关文章:

c - 从函数返回一个字符串到 main

c++ - 如何包装 C++ 函数?

c++ - 为什么取消引用数组会导致相同的地址?

c - 在 C : swapping pointers leads to unexpected results 中排序

c - 为什么我的函数不返回空指针?

c++ - 以 2 个项目作为键的哈希表?

c++ - 使用泛型编程的基本数据结构

c++ - 构建 64 位 dll 时为 "File contains invalid .pdata contributions"

java - 使用 Android NDK 时如何管理多个 C++ 文件

c++ - 从字符串到函数的映射中存在语法错误