2. 分别设计使用引用、值形参和指针形参作为形参的函数,比较不同形参的调用方法。
时间: 2024-10-15 10:16:43 浏览: 40
在编程中,形参(也称为参数)可以有三种传递方式:按引用、按值和按指针。这里以C++为例进行说明:
1. **按引用**:
```cpp
void funcByReference(int& arg) {
arg = 5; // 修改传入的引用值
}
int main() {
int num = 0;
funcByReference(num);
cout << "num after function call: " << num << endl; // 输出:5
return 0;
```
- 调用时,实际上是修改了实参的值。
- 可以避免复制大对象,提高效率。
2. **按值**:
```cpp
void funcByValue(int arg) {
arg = 7; // 这里创建了一个新的局部变量副本,不会改变原值
}
int main() {
int num = 0;
funcByValue(num);
cout << "num after function call: " << num << endl; // 输出:0
}
```
- 调用时,会为实参复制一份值,函数内部对新副本操作。
- 对于基本类型和小对象,这通常影响不大;对于大对象可能会消耗更多内存。
3. **按指针**:
```cpp
void funcByPointer(int* arg) {
*arg = 9; // 直接通过指针修改原始值
}
int main() {
int num = 0;
funcByPointer(&num);
cout << "num after function call: " << num << endl; // 输出:9
}
```
- 调用时,通过指针直接访问并修改实参地址处的值。
- 指针可以处理动态分配的对象,无需担心大小限制。
总结:
- 引用和指针能实时改变实参,适合需要共享数据的情况;
- 按值传递适合不需要修改实参的简单情况,或是处理不可变类型;
- 需要注意的是,过度使用指针可能导致内存管理复杂性增加。
阅读全文