分享

C 引用和指针的区别

 喜欢站在山上 2022-03-23

在所有的面向对象语言中都有引用这个概念..在C++中所有的引用都能用指针去实现..可是问题就来了..指针和引用到底有什么区别?

我们来分析下..指针的概念. 指针是什么? 这就要说下内存硬件了..话说.当内存条插到电脑上...操作系统就管理这个内存条.为这个内存条分配很多的小单元格子,每一个单元格子都有一个标示位(这就是我们说的地址),而指针就是地址...我们在C/C++中所定义的都是指针变量,该变量就是用来保存地址的(指针)。

我们在来分析下引用的概念...什么是引用? 引用其实也是引用对象的地址。。。也就是说 A 引用 B,那么A和B所指向的就是同

一个对象,既然是指向都是同一个对象。。那么和指针一样。A修改了值。B也就是修改了

上面我说的两个概念看起来都差不多有共同的特征。那么我们下面就用实例来帮助大家来理解这两个概念。

他们的区别有两点

1.指针变量是可以定义时不初始化的,而引用只能在定义的时候初始化(必须)

2. 指针变量所指向的内存空间(地址)是可以改变的,引用是不能改变的(意思是 初始化指向谁,那么到死也就是指向谁)

3.指针变量在16位机器上(或者某些编译器)所占的内存空间是2个字节,在32的是4个字节,而引用所占的字节数是定义的是所

引用对象的字节大小。就是说 int a=10,int &b=a; a是4个字节,b也是4个字节。。具体要看定义的类型

我们首先来定义三个变量

int a=10;

int b=20;

int *c=&a;//给指针初始化。。

然后我们来修改a的值

*c=a+b;//这个时候a的值就应该等于30了

那么来修改c指针变量

c=&b;//这个时候指针变量指向的就b 那么 *c的值就是20了。。。

下面我们来引用,我们也定义三个变量

int a=10;

int b=20;

int &c=a;//让C去引用a 那么C就是A

我们来修改a的值

c=a+b; //这个时候c=30,那么a=30;

我们在修改c的值

c=b; //这个时候c=20,那么a=20;

//我们这里就不能 写成 (&c=b),这样会报错

那么我们总结下:引用只能在初始化赋值一次,就是给所引用的对象取一个别名。

指针变量是可以改变指向内容的。访问对象的时候只能间接访问.(很重要)

具体怎么用。我相信大家看懂我所说的以后就可以自由发挥了。

    本站是提供个人知识管理的网络存储空间,所有内容均由用户发布,不代表本站观点。请注意甄别内容中的联系方式、诱导购买等信息,谨防诈骗。如发现有害或侵权内容,请点击一键举报。
    转藏 分享 献花(0

    0条评论

    发表

    请遵守用户 评论公约

    类似文章 更多