C++primer知识整理 第二章

本文介绍了C++中的引用和指针的区别,如引用是对象的别名,必须在声明时初始化,而指针是对象本身,可赋值和拷贝。讨论了指针的四种状态以及空指针的使用。同时,讲解了const限定符在引用和指针中的应用,以及类型别名的创建和使用。
摘要由CSDN通过智能技术生成

一 复合类型

引用和指针

  1. 引用

Int ival = 1024;

Int &refVal = ival;

引用即别名 只是给已经存在的对象取另一个名字

操作是绑定的

  1. 指针

指针本身就是一个对象,允许对指针赋值和拷贝,且在指针的生命周期内它可以先后指向几个不同的对象。

无需定义赋初值。若无初始化,有一个不确定的值。

double dval;

double *pd = &dval;

double *pd2 = pd;

所以是 pd指针指向dval的地址 然后 pd2指针是指向pd的指针

指针值 四种状态

  1. 指向一个对象
  2. 指向紧邻对象所占空间的下一个位置
  3. 空指针
  4. 无效指针

&和*的使用

紧随类型名:

Int &r = I;  &紧随类型名,r是一个引用(加别名)

Int *p;     *紧随~,p是一个指针

表达式中

P = &I;    &是一个取地址符

*p = I;     *是一个解引用符 (语句意思:对p指针指向的对象用i赋值)

空指针(未经初始化的指针很有可能引起运行错误)

Int *p1 = nullptr;

Int *p2 = 0;

空指针必须是指向不能被变量分配到的地址。

程序员请求一个空指针时,无论写“0“还是“NULL”,都是有编译器来生成适合机器的空指针的二进制表达形式

利用空指针(NULL)而非0,提高程序运行效率

复合类型的声明

 Int* p1,p2;

P1是指向int的指针,p2是int

 Int ival = 1024;

 Int *pi = &ival;

 Int **ppi = π

Pi指向int型数,ppi指向int型指针的指针

因为指针也是对象,所以可以对指针进行引用

Int I = 42;

Int *p;

Int *&r = p;  对指针的引用

r = &I;  对r赋值,就是使p指向i

*r = 0;  解引用r得到i,也就是p指向的对象,使得i的值改为0

二 const限定符

Const限定符对变量的类型加以限定,值无法变化,必须初始化。

  1. const的引用

const int ci = 1024;

const int &r1 = ci;

对常量的引用

非常量的引用不能指向一个常量对象

  1. const和指针

指向常量的指针

const double pi = 3.14;

const double *cptr = π

同样的,常量非常量需要对应,且不能改变。

Const指针(常量指针)

Const double pi = 3.14159;

Const double *const pip = π

三 处理类型

  1. 类型别名

Typedef double wages;  wages与double同义

Typedef wages base, *p;  base是double的同义词,p是double*的同义词

新方法 别名声明

Using SI = Sales_item;

2  类型别名与指针

Typedef char *pstring;

Const pstring cstr = 0;  cstr是指向char的常量指针

Const pstring *ps;   ps是一个指针,对象是指向char的常量指针

四 其他

1 decltype类型指示符

  decltype(f()) sum =x;   sum的类型就是函数f的返回类型

2.自定义数据结构

 

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

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值