C++快速入门 (四) 引用 和 指针

一. 引用 

(1). 内存中变量的存储
前边说过 计算机管理内存时,会以字节为基本单位进行顺序线性格式化(x86保护模式下),这样每一字节的内存都会有一个独一无二的十六进制数字标识, 定义一个变量的过程 其底层就是将 变量的值写入某个数字标识符所代表的内存的过程。如

int a = 10;

变量名 a 实质上只是为了方便编程而由 编程语言机制 附加的功能,当代码编译为机器码时,变量名是不存在的, 只是用其地址值和其长度来表示。例如 变量 a 被存储在 地址  0x001efd1c (起始地址) , 而数据类型 int 编译时会被转换为其代表的变量长度4字节(32位处理器) ,
说了这么多,其实只是想说明 C++每个对象都有一个内存地址值, 地址值 所指向的内存+加其 长度所对应的内存块保存着对象的值, 比如上边的 a 的地址值是  0x001efd1c, ( 0x001efd1c+4)这块内存保存了 a 的值 10

(2). 引用
C++中 可以使用 符号 <&> 来声明引用

         int  a = 10;
          int  &ay = a;

这时 ay本身对应的内存空间 将保存 一个地址值 ,该地址值指向 变量 a内存空间 的 地址。既
  • ay -> ay的内存地址 -> a的变量值地址 -> a的值 10
在 C++ 中是无法获取引用本身的内存地址,而是返回其内存地址中存储的指向 a 的 变量值 的地址 .

(3). 引用的特性, 
  • 创建时必须要被初始化 
  • 一旦创建后指向一个对象地址就不能改变
  • 不能有 NULL 引用。

                 int k=10,y=20;
                 int &a = k;  
                cout << &a << endl;
                a = y;
                cout << &a << endl;  // 引用地址相同
                cout << a << endl;

从上边的代码可以看出,  引用一旦定义,就不能改变其引用的对象地址, 只能改变引用对象本身, 


二. 指针

(1). 什么是指针
可以看到 引用的最大特性既  一旦定义就不能修改地址使其指向另一个对象,而指针 就没有这种限制, 指针,则既可以改变指针指向的对象地址,也可以改变指针指向对象的本身
C++中  符号 <*> 来声明指针

int a = 10;
int *p = &a;

可以看到 , 必须要使用对象的地址为指针赋值, &a 就表示获取 a 的内存地址, 有些书上会把当前应用下的符号 <&> 叫 取地址操作符, 


(2). 
  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 2
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论 2
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值