在C++中,&的作用取决于上下文。以下是一些基本规则来帮助判断&是作为取地址运算符还是作为引用符号:
1、作为取地址运算符:当&在一个已经存在的变量前面时,它是取地址运算符。例如:
int a = 10;
int* p = &a; // &a 是取变量 a 的地址
2、作为引用符号:当&在类型声明中使用时,它表示引用。例如:
int a = 10;
int& ref = a; // ref 是 a 的引用
3、在函数参数中:如果&在函数参数的类型声明中,那么它表示引用,这样函数可以修改传入参数的值。例如:
void foo(int& a) { // a 是一个引用参数
a = 20;
}
4、在函数调用中:如果&在函数调用时用于参数,那么它是取地址运算符。例如:
void foo(int* a) { // a 是一个指针参数
*a = 20;
}
int a = 10;
foo(&a); // &a 是取变量 a 的地址