引用传递保存变量引用,改变引用所指变量的值会改变原值,不能为 null,通常效率更高;指针传递保存变量地址,改变指针所指变量的值不会改变原值,可以为 null,通常效率略低。
C++ 函数中引用与指针传递的异同点
引用传递
- 引用传递通过保存变量的引用来传递变量值。
- 改变引用所指变量的值会改变原值。
- 不能将引用设置为 NULL。
- 通常比指针传递效率更高。
指针传递
立即学习“”;
- 指针传递通过保存变量地址来传递变量值。
- 改变指针所指变量的值不会改变原值。
- 可以将指针设置为 NULL,表示不指向任何变量。
- 通常比引用传递效率略低。
异同点
特征 | 引用传递 | 指针传递 |
---|---|---|
传递方式 | 传递引用 | 传递地址 |
可否改变原值 | 是 | 否 |
可否为 NULL | 否 | 是 |
效率 | 通常更高 | 通常略低 |
实战案例
考虑以下函数:
void swap(int& a, int& b) { int temp = a; a = b; b = temp; }
登录后复制
在此函数中,a 和 b 作为引用传递。调用此函数时,它会交换传递给它的两个变量的值。
int main() { int x = 10; int y = 20; swap(x, y); cout << x << " " << y << endl; // 输出:20 10 }
登录后复制
现在考虑以下函数:
void updatePtr(int* ptr) { *ptr = 10; }
登录后复制
在此函数中,ptr 作为指针传递。调用此函数时,它会更改传递给它的变量而不是变量本身。
int main() { int x = 5; int* ptr = &x; updatePtr(ptr); cout << x << endl; // 输出:10 }
登录后复制
以上就是C++ 函数中引用与指针传递的异同点总结的详细内容,更多请关注php中文网其它相关文章!