在 C++ 中,函数调用形参列表int *G和int G;int &G的差别,请给我代码示例
时间: 2024-09-09 17:02:59 浏览: 92
C#调用C++的dll实例,回调函数,string和int数组参数传递
4星 · 用户满意度95%
在C++中,这三个函数调用形参列表有不同的含义:
1. `int *G`:这是一个指向整型变量的指针,接受一个整数的地址作为参数。这意味着函数会接收一个副本的指针,并不会改变原始变量的值。例如:
```cpp
void modifyPointer(int* G) {
*G = 5; // 修改指针所指向的值
}
int main() {
int num = 10;
modifyPointer(&num); // 函数修改的是num的地址所对应的值
std::cout << num; // 输出:10 (未变)
return 0;
}
```
2. `int G`:这通常表示函数接收一个整数值并对其进行直接操作。如果函数内部改变了这个值,那么外部也能看到变化。因为这是传值调用,传递的是副本,不是引用:
```cpp
void modifyValue(int G) {
G = 5; // 直接修改函数内的局部变量
}
int main() {
int num = 10;
modifyValue(num); // 函数修改的是它自己的局部变量,不影响main中的num
std::cout << num; // 输出:10 (未变)
return 0;
}
```
3. `int &G`:这里是指向整数的引用,也称为引用参数。它是对原始变量的别名,函数可以直接修改引用所指向的值,这将直接影响到调用函数外的变量:
```cpp
void modifyReference(int& G) {
G = 5; // 直接修改引用的值,这会影响到main中的num
}
int main() {
int num = 10;
modifyReference(num);
std::cout << num; // 输出:5 (已被修改)
return 0;
}
```
阅读全文