网站首页 > 基础教程 正文
前言
今天开始为大家更新一些关于c++的知识点,以后会定期更新一些关于c++重点知识,希望和大家一起进步,今天是第一篇关于c++的文章,我就和大家分享一个比较基础和知识点,什么是引用?
引用变量
我们c++相对于C语言在对变量的操作中多了一种引用,什么是引用,简单来说就是别名,就是另外的名字,我们很多人可能有该名字的经历,那么我们的曾用名和现用名都是你自己,只不过你比别人多了一种称呼。比如a的引用变量aa,那么a和aa实际上就是一个变量,可以交替来表示,这里就引出来了一个问题,我们为什么要引入变量?别名有什么作用?对我们的使用有什么帮助呢?我们要知道我们引用变量主要就是作为函数参数的形参,用过将引用变量作为形参,可以使得函数得到原始数据,而不是拷贝。我们知道在C语言中我们要实现原始数据的传输我们使用的地址或者是指针变量,那么我们c++中你又有了新的选择那就是使用引用变量。后面我们会详细地说一下怎么样使用把引用变量当作函数形参的。
创建引用变量和分析
我们说过C语言和c++使用&符号来表示变量的地址。在c++中我们应该还要记住另外的含义那就是用来声明引用变量。
int a;
int &aa=a;
这里的&符号并不是取地址的意思,而是声明了aa是a引用变量,他们所指的内存单元是一个地方。
c++代码实现
#include<iostream>
using namespace std;
int main()
{
int a=10; //变量
int & aa=a;//引用
int *pa=&a;//指针
cout<<"a="<<a<<endl; //变量
cout<<"aa="<<aa<<endl;// 引用
cout<<"pa="<<*pa<<endl; //指针
// a++;
aa++;
// (*pa)++;
cout<<"a="<<a<<endl;
cout<<"aa="<<aa<<endl;
cout<<"pa="<<*pa<<endl;
cout << "a的地址:"<<&a<<endl;
cout << "aa的地址:"<<&aa<<endl;
cout << "pa的地址:"<<pa<<endl;
return 0;
}
结果分析
在代码中我分别对变量本身加1,然后变量的别名加1,然后对变量的指针也加1,然后发现变量的变化是一致的,最后打印了变量本身的地址,引用变量的地址和指针的地址,我们可以发现他们三个地址是一样的,这就验证了我们上面分析的情况说明变量和别明就是同一个东西,就像你小时候给小伙伴起的外号一样。
引用和指针有什么区别
这个问题在c++面试中也是经常被问到的一个知识点,通过上面的分析我们知道别名和指针都差不多对吧,但是说他们还真的不一样,具体的来看看下面的分析:
引用声明的时候就必须初始化,但是指针可以先不用初始化。
int a;
int &aa;
aa=a;
这种写法是不行的,我们可以看编译器编译的时候是不能通过的,这就是引用和指针的一个区别。
2、引用一旦绑定了变量那就意味着后面不能更改绑定,但是我们的指针时可以指向其他地址的。
int a;
int &aa=a;
int b;
int &aa=b;
我们的编译器也是不允许上面的代码通过编译的,错误信息如下,
3,、我们学C语言的时候都知道我们指针时一个变量,对它的操作分为两种,一个是对它自己的操作,另外一个是对它所指向的值进行操作,但是我们的引用的所有操作都等同于对本体进行操作。
思考
我们了解了关于引用的原理和实现之后我们来看下面的代码会输出什么样的结果?
#include<iostream>
using namespace std;
int main ()
{ 5 int a=10;
int & aa = a;
int b=20;
aa=b;
cout<<"a="<<a<<endl;
cout<<"aa="<<aa<<endl;
cout<<"b="<<b<<endl;
return 0;
}
今天关于引用的问题就先说到这里,后面我们在说一下当做为函数形参时引用有什么特别之处。
猜你喜欢
- 2024-10-09 C++编程:函数参数类型-引用、指针、值
- 2024-10-09 C++ 引用,如何定义对象的常引用?linux C++第50讲
- 2024-10-09 深入浅出C++引用:理解与应用 c++引用的含义
- 2024-10-09 c++引用详解 c++引用怎么写
- 2024-10-09 c语言-指针和引用的理解 c中指针和引用的区别
- 2024-10-09 2 C++重点概念理解系列2-理解引用的本质
- 2024-10-09 C++|指针,理解指针从为什么需要指针这种数据类型开始
- 2024-10-09 C|函数指针和指针函数的联系与区别
- 2024-10-09 const、指针、引用的关系 const与指针的关系
- 2024-10-09 C++ API设计:指针vs引用,应对空值、内存分配和可选参数选择之道
- 最近发表
- 标签列表
-
- gitpush (61)
- pythonif (68)
- location.href (57)
- tail-f (57)
- pythonifelse (59)
- deletesql (62)
- c++模板 (62)
- css3动画 (57)
- c#event (59)
- linuxgzip (68)
- 字符串连接 (73)
- nginx配置文件详解 (61)
- html标签 (69)
- c++初始化列表 (64)
- exec命令 (59)
- canvasfilltext (58)
- mysqlinnodbmyisam区别 (63)
- arraylistadd (66)
- node教程 (59)
- console.table (62)
- c++time_t (58)
- phpcookie (58)
- mysqldatesub函数 (63)
- window10java环境变量设置 (66)
- c++虚函数和纯虚函数的区别 (66)