2.3 复合类型

Posted mayfly-nymph

tags:

篇首语:本文由小常识网(cha138.com)小编为大家整理,主要介绍了2.3 复合类型相关的知识,希望对你有一定的参考价值。

2.3.1 引用

左值引用,右值引用

引用并非对象,相反的,它只是为了一个已经存在的对象所起的另外一个名字。

 

int i = 20;
double c = 2.25;
int &a = 10;//错误:引用不能与字面值或某个表达式计算值绑定
int &a = i;//a是引用,i是对象
int &a = c;//错误:所有引用类型都需要与对象类型匹配

 

2.3.2 指针

指针与引用的不同:

技术分享图片

 

指针的值(即地址)有以下几种状态:

1.指向一个对象。

 

2.指向紧临对象所占空间的下一个位置。

 

3.空指针,意味着指针没有指向任何对象。

 

4.无效指针,也就是上述情况以外的其他值。

试图拷贝或访问无效指针都将引发错误,编译器不负责检查此类错误。

 

5.空指针:

int *p1 = nullptr;
int *p2 = 0;//需要首先#include <csdlib>
int *p3 = NULL;

NULL为预处理变量,C++中在cstdlib中,#define NULL 0

 

6.void*指针

可以存放任意类型的地址,但我们不知道这个指针的类型。

 

2.3.3 理解复合类型的声明

int i=1024,*p=&i,&r=i;

 

在同一条定义语句中,虽然基本数据类型只有一个,但是声明符的形式却可以不同。

 

int*p中int是基本数据类型,*是类型修饰符(解引用符),类型修饰符是声明符的一部分,p是变量标识符。

(从右到左)

 

以上是关于2.3 复合类型的主要内容,如果未能解决你的问题,请参考以下文章

2017.11.11 复合类型

MongoDB——索引类型之复合索引(Compound Index)

MongoDB——索引类型之复合索引(Compound Index)

Android 片段与复合控件

复合(或引用)数据类型图解:及例题代码

函数