指针和引用

指针和引用的区别:
  1. 从本质上看,指针是地址,引用是别名;
  2. 从现象上看,指针可以在运行时改变其所指向的值,而引用则总是指向在初始化时被指定的对象不能改变;
  3. 从内存分配看,程序为指针变量分配内存区域,而不为引用分配内存(所以引用申明时必须初始化,指向一个已经存在的对象);
  4. 对指针的级数没有限制,但是引用只能是一级:
int** p1;	//合法,指向指针的指针
int*& p2;	//合法,指向指针的引用
int&* p3;	//非法,指向引用的指针是非法的
int&& p4;	//非法,指向引用的引用是非法的

即:指向指针的引用是合法的,指向引用的指针是非法的

指针参数和引用参数

对于函数参数,什么时候使用引用、什么时候使用指针、什么时候按值传递,下面是一些指导原则:

  • 对于使用传递的值而不作修改的函数:
  1. 数据对象很小,如内置类型或小型结构,则按值传递;
  2. 数据对象时数组,则使用指针(这是唯一的选择),并声明为const;
  3. 数据对象是较大的结构,则使用const指针或const引用,以提高效率;
  4. 数据对象是类对象,则使用const引用。
  • 对于修改调用函数中数据的函数:
  1. 数据对象是内置数据类型,则使用指针;
  2. 数据对象是数组,则只能使用数组;
  3. 数据对象是结构,则使用指针或引用;
  4. 数据对象是类对象,则使用引用。
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值