【C++】引用变量--1.如何创建引用变量

    xiaoxiao2022-06-25  186

    目录

    引用变量

    1.1 创建引用变量

    引用变量的程序示例

    程序运行结果


    引用变量

    引用是对已定义的变量的别名,比如一个人的大名和小名,这指的都是一个人。区别指针与引用变量

    1.1 创建引用变量

    比如要将rodents作为rats变量的别名,可以这样做:

    int rats;

    int & rodents =rats;

     注意,&这里不是地址运算符,而是类型标识符一部分,int & 指的是指向int 的引用

    引用变量的程序示例

    //firstref.cpp -- defining and using a reference //引用 #include<iostream> int main() { using namespace std; int rats = 101; int & rodents = rats;//rodents这里是rats的引用 cout << "--------------------" << endl; cout << "原始的" << endl; cout << "rats = " << rats; cout << ", rodents = " << rodents << endl; cout << "--------------------" << endl; cout << "rodents++后的" << endl; rodents++; cout << "rats = " << rats; cout << ", rodents = " << rodents << endl; cout << "--------------------" << endl; cout << "显示其地址" << endl; cout << "rats address = " << &rats; cout << ", rodents address = " << &rodents << endl; return 0; }

    程序运行结果

    必须在声明引用变量时进行初始化,这点和指针不一样

    如果非要拉上关系,引用更接近const指针,必须在创建时进行初始化,一旦关联,就一直效忠。

    int & rodents =rats;

    实际上是下述代码的伪装

    int * const pr = &rats;

    试图将变量的引用改变的程序示例

    // secref.cpp -- defining and using a reference #include<iostream> int main() { using namespace std; int rats = 101; int & rodents = rats; //引用 cout << "--------------------" << endl; cout << "原始的" << endl; cout << "rats = " << rats; cout << ", rodents = " << rodents << endl << endl; cout << "--------------------" << endl; cout << "显示其原始地址" << endl; cout << "rats address = " << &rats; cout << ", rodents address = " << &rodents << endl << endl; int bunnies = 50; rodents = bunnies;//这里可以改变引用吗? cout << "--------------------" << endl; cout << "观测是否发生了改变" << endl; cout << "bunnies = " << bunnies; cout << ", rats = " << rats; cout << ", rodents = " << rodents << endl << endl; cout << "--------------------" << endl; cout << "显示其现在的地址" << endl; cout << "bunnies address = " << &bunnies; cout << ", rodents address = " << &rodents << endl << endl; return 0; }

    咋一看,改变成功了,但是发现bunnies地址与rats和rodents的地址并不同,这是因为上述语句等效于:

    rats = bunnies;

    也就意味着可以通过初始化声明来设置引用,但不能通过赋值来设置。

    人工智能博士 认证博客专家 985AI博士 AI专家 博客专家 王博Kings,985AI博士在读,博客专家,华为云专家,是《机器学习手推笔记》、《深度学习手推笔记》等作者,我的微信:Kingsplusa,欢迎交流学习;在人工智能、计算机视觉、无人驾驶等具有丰富的经验。

    最新回复(0)