百科狗-知识改变命运!
--

C++ 中指针和引用有什么区别详解

是丫丫呀1年前 (2023-12-02)阅读数 34#综合百科
文章标签变量指针

1、取地址时,指针有自己的地址,而引用的地址与它引用的变量相同,即引用本身没有地址或说无法获取它的地址;

2、指针可以改变它指向的变量的值,引用也可以改变它引用的变量的值;

3、对于一般指针(不是声明为type * cosnt pt;),可以使它指向另一个变量,即把另一个变量的地址赋给它,即pt=&another;,先前已有pt=&this;而对于引用r,执行r=another;是改变它引用的变量的值;

4、引用必须在声明时初始化,即使它引用一个变量,且一旦引用了一个变量以后,就永远引用这个变量,不能再引用其它变量;

#include

#include

#include

using namespace std;

int main(int argc,char *argv[])

{

int a=1,b=2,c=3,*pt=&a,&r=b;

int * const pt2=&a;

int const *pt3=&a;

//1

printf("&a=%x,&pt=%x\n",&a,&pt); //不同

printf("&b=%x,&r=%x\n",&b,&r); //相同,都是b的地址

printf("\n");

//2

*pt=11;

r=22;

printf("%d,%d\n",a,*pt); //11,11

printf("%d,%d\n",b,r); //22,22

printf("\n");

C++ 中指针和引用有什么区别详解

//3

//pt2=&b; //错误

pt=&b;

printf("%d,%d\n",a,*pt); //11,22,pt现在指向b,因此*pt输出22

r=a;

printf("%d,%d\n",b,r); //11,11,注意当把r赋值为a后,r引用的变量b的值也改变了

//4

//int &r2; //错误,'r2' declared as reference but not initialized

//r=&c; //错误,r已经引用了变量b,不能再引用其它变量或不能把int*转换为int

system("PAUSE");

return EXIT_SUCCESS;

}

指针,全称为指针变量,是用来存储内存地址的一种变量。程序中,一般通过指针来访问其指向的内存地址中的内容(数据)。

引用,是C++中提出来的一种新的使用变量的方式,即,给实际变量起个别名,通过这个别名来引用实际的变量。标准C中不支持变量的引用。

这两个概念没有任何相关性。

指针是实实在在的变量,有自己的内存存储空间,它可以指向任何有效的变量。

引用是一种形式、方法,定义的引用变量,实际上是原实际变量的另一个名称(别名),引用变量本身没有自己的实际存储空间,操作引用变量,就是在操作实际变量。

如:

鹏仔微信 15129739599 鹏仔QQ344225443 鹏仔前端 pjxi.com 共享博客 sharedbk.com

免责声明:我们致力于保护作者版权,注重分享,当前被刊用文章因无法核实真实出处,未能及时与作者取得联系,或有版权异议的,请联系管理员,我们会立即处理! 部分文章是来自自研大数据AI进行生成,内容摘自(百度百科,百度知道,头条百科,中国民法典,刑法,牛津词典,新华词典,汉语词典,国家院校,科普平台)等数据,内容仅供学习参考,不准确地方联系删除处理!邮箱:344225443@qq.com)

图片声明:本站部分配图来自网络。本站只作为美观性配图使用,无任何非法侵犯第三方意图,一切解释权归图片著作权方,本站不承担任何责任。如有恶意碰瓷者,必当奉陪到底严惩不贷!

内容声明:本文中引用的各种信息及资料(包括但不限于文字、数据、图表及超链接等)均来源于该信息及资料的相关主体(包括但不限于公司、媒体、协会等机构)的官方网站或公开发表的信息。部分内容参考包括:(百度百科,百度知道,头条百科,中国民法典,刑法,牛津词典,新华词典,汉语词典,国家院校,科普平台)等数据,内容仅供参考使用,不准确地方联系删除处理!本站为非盈利性质站点,本着为中国教育事业出一份力,发布内容不收取任何费用也不接任何广告!)