c++ Primer 学习笔记--第二章

本文详细探讨了C++中的复合类型,包括引用和指针的特性与区别。引用作为现有对象的别名,必须在初始化时绑定,并且不能绑定到字面值或表达式。指针是对象,可以赋值和拷贝,可以为空,可以指向不同类型对象,但必须初始化。此外,介绍了const限定符的使用,const对象必须初始化,并讨论了extern const用于跨文件共享。
摘要由CSDN通过智能技术生成

2.3复合类型

2.3.1引用

引用包括左值引用和右值引用,我们通常说的是左值引用,引用必须初始化,一旦初始化完成,引用将和它的初始化值对象之一绑定在一起。

引用本身不是一个对象,它只是为一个已存在的对象所起的另外一个名字,因此不能定义引用的引用

引用在定义时要和绑定的对象严格匹配。而且引用只能绑定在对象上,不能与字面值或者某个表达式的计算结果绑定在一起。

2.3.2指针

指针实现了对其它对象的间接访问。

指针与引用的不同:

  1. 指针本身是一个对象,可以进行赋值和拷贝。
  2. 指针无需在定义是=时进行赋值操作。

指针可以利用&获取某个对象的地址,但是引用不是对象,没有实际地址,因此不能定义指向引用的指针。指针指向的对象必须和指针的类型匹配。

指针可以利用*访问某个对象,解引用操作仅适用与确实指向了某个对象的有效指针。

指针可以定义为空,不指向任何对象。在定义指针时要对指针进行初始化,并且尽量在定义完对象之后再定义指针。避免使用未初始化的指针。(?未初始化的指针和无效指针有什么区别)

//生成空指针的方法
int *p1 = nummptr;  //等价于int *p1 = 0;
int *P2 = 0;        //需要加头文件#include cstdlib  直接将p2初始化为字面常量0
int *p3 = NULL'     //等价于int *P3 = 0;

 void*是一种特殊的指针类型,可用于存放任意对象的地址,但是我们不能访问内存空间中所存的对象。使用具有局限性。

2.3.3理解复合类型的声明

 可以定义多个变量,但是类型修饰符(*,&)仅作用于紧随其后的变量,对剩余的变量没有影响。

int* ip, i, &r = i;  //定义一个整形指针ip,一个int变量i,一个指向变量i的引用r

2.4const限定符*

const对象必须初始化。默认状态下const对象只能在文件内使用,如果想在多个文件中共享const对象,必须在变量的定义之前加上extern关键字。

 

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

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值