引用

void test(int & val);
void test2(const int & val);
void test3(int val);
struct Person{
    string name;
    int age;
    int weight;
};


int main() {
    int rats = 10;
    int & rodents = rats; //必须在创建的时候进行初始化

    //创建引用的地址指向源值,地址相同
    int *p = &rats;
    cout << rats << "address : " << &rats <<endl;
    cout << rodents << "address : " << &rodents <<endl;
    cout << *p << "address : " << p << endl;
    //通过引用的方式,将会修改 实参的值 可以通过 const进行修饰防止修改
    //如果函数调用的参数不是左值 const引用参数类型不匹配,c++将创建匿名临时变量
    //函数调用参数的值将传递给这个匿名变量,并让参数引用该变量
  // 普通参数传递则是对参数的临时复制,相对指针和引用效率要低很多
double b = 1.0; //test2(rats); test2(b); test3(b);
  
const Person & clone(const Person & p){
//参数为引用 const修饰 则不能直接通过指针引用需要加const修饰
const Person *tmp;
tmp = &p;
return *tmp;
}


return 0;
}
void test(int & val){ val *= val; } void test2(const int & val){ val *= val; //编译不通过 只有只读权限 cout << val << endl; } void test3(int val){ cout << val << endl; }
原文地址:https://www.cnblogs.com/alplf123/p/8026244.html