地址传参,和值传参有什么区别
时间: 2024-09-17 11:02:26 浏览: 55
php获取'/'传参的值简单方法
地址传参(Pass by Reference)和值传参(Pass by Value)是编程中函数参数传递的两种基本方式。
1. **值传参**:
- 这种方式下,函数接收到的是参数的一个副本拷贝。当函数内部对这个副本进行操作时,原变量不会受到影响。也就是说,函数内的修改不会改变原参数的值。
```cpp
void setValue(int x) {
x = 100; // 此时x只是局部变量,不影响外部x的值
}
int main() {
int a = 50;
setValue(a); // a仍然是50
return 0;
}
```
2. **地址传参**:
- 在这种情况下,函数接收的是参数的实际地址(内存地址)。这意味着函数能够直接操作原始数据,对参数所做的任何改动都会反映到实际变量上。
```cpp
void setAddress(int *p) {
*p = 100; // 直接改变了指针所指向的内存位置,a也被修改了
}
int main() {
int a = 50;
setAddress(&a); // a现在是100
return 0;
}
```
总结来说,值传参会创建一份副本供函数使用,而地址传参则是共享数据本身,使得函数可以直接修改原始数据。这在处理大型数据结构或性能要求高的场景下尤为关键。
阅读全文