C++的指针和引用

1引用
      引用是为变量起别名   实际上是在底层创造了一个常量指针,引用和其引用的对象必须为同种类型,
    例如const int a=10;此时引用:int&b=a;会报错报错因为类型不同,正确的引用为const int &b=a;
    定义引用时必须初始化,且不可以为空,引用关系不可改变
    引用创建后,引用和变量没区别(地址都一样)
    不占内存
2指针
    指针存的是谁的地址    *指针就是谁
    int a=10;    int *p=&a;      cout<<*p        值为10     cout<<p      值为p的地址
    指针的访问方式是间接访问
             野指针:
            也叫悬挂指针,也就是不可用的指针,野指针出现原因一般有:
            未初始化int*a    此时会报错;
            指针被释放但没置空    此时不会报错,但是指针会指向随机地址
            指针所指对象死亡  此时会报错
             空指针:
            闲置指针,没有被使用的指针,定义时 int*p=0或者int*p=NULL;编译器保证了他不会是任何一个被使用的地址                    (00000000空地址可以重复,也就是说可以有多个空指针,他们的地址都是00000000)
            空指针不是错误,因为他是等待被使用的指针,但是要记得使用
    指针的大小:
        指针的大小是不分类型的,在64位环境下不论是int*还是char*,long*他们的大小都是8字节(64bit),而在32位下为4字节
        但他们的区别在跨步时,每当指针+1;他们的地址就会根据类型变化  char*+1时,地址增加1,int*+1时,地址增加4
3引用和指针的区别
    1.引用不占内存,指针占内存,引用的本质是起别名,引用创建后和对象共用一个地址;       指针是一个实体 占用空间
     2.引用必须初始化,且不能初始化为空;       指针不作要求
    3.引用++是将变量++;       指针++时是把地址++
    4.有多级指针没有多级引用
    5.引用不能改变引用关系;    指针不作要求

(自己整理,如有错误请指正)

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

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值