引用和指针的区别

1.内存空间角度:指针是分配内存空间的,包含存储指针的地址信息 ,指针也是有类型的,什么类型的指针只能指向什么类型的数据,无论什么类型的指针,大小都是地址总线的位数,比如32位机子,指针的大小就是4个字节。引用不分配内存空间,引用就是原来变量的别名,空间还是原来的空间,比如你的学名叫张三,引用就是你的小名狗蛋,引用只是个别名,只是个名字。

2.可改变性:一个指针可以指向不同的对象,只要类型一致就行,而引用定义的时候已经初始化,且初始化以后不允许再重新绑定对象。

  比如: 

   int a = 0;        

   int b = 1;                          

   int *p = a;

   p = &b;

3.所以引用访问对象是直接访问。指针访问对象是间接访问。

4。如果p是指针,那么*p就是对p指向的数据对象的访问了。但是两者在作为形参的时候非常相似,区别是指针拷贝副本,引用不拷贝。这也是c++长处于java的优点,c++可以控制到没用的东西我直接不用,不该开辟空间的我不用开辟,而java等其他语言则不可以。

#include<stdio.h>
void pt(int * pta,int * ptb)
{
 int *ptc;
 ptc=pta;pta=ptb;ptb=ptc;
 printf("zhizhen2:a=%d,b=%d\n",*pta,*ptb);
}
void ref(int &ra,int &rb)
{
 int rc;
 rc=ra;ra=rb;rb=rc;
}
void main()
{
 int a=3;int b=4;
 int *pa=&a;int *pb=&b;
 pt(pa,pb);
 printf("zhizhen: a=%d,b=%d\n",a,b);
 printf("zhizhen2:a=%d,b=%d\n",*pa,*pb);
 ref(a,b);//传地址
 printf("yinyong: a=%d,b=%d\n",a,b);
}

 

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值