用c++的方法分别设计使用引用,值形参和指针形参作为形参的函数,比较不同形参的调用方法
时间: 2024-10-08 11:04:16 浏览: 28
在C++中,引用、值和指针都可以作为函数参数。它们各有特点,这里我会分别介绍并比较这三种方式的函数调用。
1. **引用** (Reference): 引用实际上是指向某个变量的别名,修改引用等于修改原变量。以下是引用作为参数的例子:
```cpp
void updateByRef(int& x) { x = 5; } // x是整数的引用
int main() {
int num = 10;
updateByRef(num); // 直接修改num的值
std::cout << "num after ref: " << num << std::endl; // 输出:num after ref: 5
return 0;
}
```
调用时直接将变量传递给引用,无需解引用操作。
2. **值形参** (Value Parameter): 普通参数传递的是副本,函数内部对参数的操作不会改变原始变量。例如:
```cpp
void copyValue(int val) {
val = 5; // 这里创建的是一个新的数值5,不影响原有变量
}
int main() {
int num = 10;
copyValue(num);
std::cout << "num after value: " << num << std::endl; // 输出:num after value: 10
return 0;
}
```
调用时需要明确地复制一份新的值到函数内。
3. **指针形参** (Pointer Parameter): 指针传递的是地址,函数可以直接修改指向的对象。看例子:
```cpp
void updateByPtr(int* ptr) {
*ptr = 5; // 修改指针所指向的内存位置
}
int main() {
int num = 10;
updateByPtr(&num);
std::cout << "num after pointer: " << num << std::endl; // 输出:num after pointer: 5
return 0;
}
```
调用时将变量的地址传递给指针,函数可以直接访问该地址的内容。
总结:
- 引用能实时反映原变量变化,适合大量数据交换;
- 值形参在函数内部独立于外部,互不影响;
- 指针形参效率高,可以修改原数据,但需要小心空指针和越界问题。
阅读全文