c++语言中的引用与指针

注:纯c语言不支持引用语法
  一、引用与指针的对垒
  1、引用的声明:int a=1;
                             int &b=a;   //必须在声明时初始化
 指针的声明:int *p=NULL; //可不初始化,当然,为了防止野指针常初始化为NULL
  2、引用只是已定义变量的别名,没有分配存储空间
       而指针在声明时是分配了存储空间的
  3、用sizeof函数进行求内存大小操作时,sizeof指针  在64位操作系统下永远是8个字节,而sizeof引用  计算出的是它所引用内存的大小
  4、引用不能指向常量  int &a=10;    这是不和法的
       而指针能指向常量  int *p=10;     不能通过常量指针改变所指对象的值
  5、引用声明后,目标变量名有两个名称,即目标变量原名和引用名,并且,该引用名不能再作为其它变量名的别名
       而指针声明后能指向其它的变量名
  6、引用:  不能建立对数组的引用
       指针:   能指向数组
  二、引用的用法详解
  1、引用作为参数传递
  以前大数据作为参数传递的时候,方案采用的方法往往是指针,从而避免数据块整个压入栈,提高程序的效率。
  但现在又多了一个同样效率的选择(某些情况下又是必须的选择)——引用
  void print_list(int &a){
  int b=123456789;
  a=b;
  }
  int main(){
  int a=9;
  print(a);
  printf("%d",a);
  return 0;
  }
  输出结果为   123456789    a的值改变
  2、常引用
  能在引用前加const就尽量加,作用是不能通过引用变量别名去修改值,提高引用传递的安全性
  int a=9;
  int &b=a;
  a=25;//编译通过,成功修改a 的值
  b=25;//编译错误
  
  扩展:指针中的const
  1、不能通过const类型的常量指针去修改指针指向变量的值
  int a=1,b=2;
  const int *p=&a;
  a=b;//编译通过,成功修改a 的值
  *p=b;//编译错误
  2、不能将常量指针赋给非常量指针,反过来可以
  const int *p1;    //常量指针
  int *p2;     //非常量指针
  p2=p1;     //错误
  p1=p2;    //正确

  • 1
    点赞
  • 1
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值