函数参数表中*和&的区别
时间: 2024-09-13 19:16:40 浏览: 10
在C/C++编程中,`*` 和 `&` 都是用于函数参数传递的指针运算符,但它们的作用和用途有所不同:
1. `*`(星号)通常放在参数前表示“解引用”或“取地址”。当函数需要修改传入的变量时,如果你使用 `*` 参数,实际上是将指向该变量的指针作为参数接收,然后通过 `*` 解引用来访问和修改实际的变量内容。例如:
```cpp
void modify(int *ptr) { // 接收一个整型指针
*ptr = 5; // 修改指针所指向的值
}
int main() {
int x = 10;
modify(&x); // 传递变量x的地址给modify函数
// 现在x的值变为5
return 0;
}
```
2. `&`(与号)则是获取变量的地址运算符,它用于传递变量的地址给函数,而不是变量本身。当你希望函数访问并修改变量的原始值,而不仅仅是其副本时,可以使用 `&`。例如:
```cpp
void changeValue(int &value) { // 接收一个整型引用
value = 7; // 直接修改引用所指向的值
}
int main() {
int y = 3;
changeValue(y); // 传递y的地址给changeValue
// 现在y的值也变为7
return 0;
}
```
在`&`的情况下,对`value`的改变会影响到`main`函数中的`y`。
总结来说:
- `*`传递的是值(复制),适用于不需要修改原值的情况。
- `&`传递的是地址(引用),可以直接操作原值,适用于需要改变原数据的情况。