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

 我来答
microroom
科技发烧友

2017-05-29 · 智能家居/数码/手机/智能家电产品都懂点
知道大有可为答主
回答量:7118
采纳率:83%
帮助的人:1532万
展开全部
1、取地址时,指针有自己的地址,而引用的地址与它引用的变量相同,即引用本身没有地址或说无法获取它的地址;
2、指针可以改变它指向的变量的值,引用也可以改变它引用的变量的值;
3、对于一般指针(不是声明为type * cosnt pt;),可以使它指向另一个变量,即把另一个变量的地址赋给它,即pt=&another;,先前已有pt=&this;而对于引用r,执行r=another;是改变它引用的变量的值;
4、引用必须在声明时初始化,即使它引用一个变量,且一旦引用了一个变量以后,就永远引用这个变量,不能再引用其它变量;
#include<iostream>
#include<iomanip>
#include<cstdlib>
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");

//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;
}
匿名用户
2017-05-29
展开全部
这个不是很难的
已赞过 已踩过<
你对这个回答的评价是?
评论 收起
推荐律师服务: 若未解决您的问题,请您详细描述您的问题,通过百度律临进行免费专业咨询

为你推荐:

下载百度知道APP,抢鲜体验
使用百度知道APP,立即抢鲜体验。你的手机镜头里或许有别人想知道的答案。
扫描二维码下载
×

类别

我们会通过消息、邮箱等方式尽快将举报结果通知您。

说明

0/200

提交
取消

辅 助

模 式