C++ 基础学习教程 第二章 变量(2)
2017-06-16 16:25
344 查看
第二节 复合类型
在第一节中我们介绍了变量的定义,声明,初始化等变量基本基础知识。本节我们将讲解比较复杂的复合类型。
复合类型是指基于其他类型定义的类型,即在基础数据类型的基础上,又指明了该变量与基本数据类型有关的某种类型。本节将介绍其中两种:引用和指针。
1 引用类型
1.1 定义与初始化
引用是为变量起了另一个名字,引用类型引用另外一种类型。通过将声明符写成&d的形式来定义引用类型,其中d是声明的变量名:
在定义引用类型变量时,程序并不会给引用变量分配存储数据的空间来拷贝初始值,而是将引用和它的初始值绑定在一起,一旦初始化完成,引用将和它的初始值对象一直绑定在一起。因为无法令引用重新绑定到另一个对象,因此引用必须初始化。
1.2 说明
引用的类型都要与之绑定的对象严格匹配,而且,引用只能绑定在对象上,而不能与字面值或某个表达式的计算结果绑定在一起,除了两种例外情况:
第一种特例就是在初始化常量引用时允许用任意表达式作为初始值,只要该表达式的结果能转换成引用的类型即可。
第二种由于超出基本概念太多,暂时不说明。
2.指针
2.1 定义
指针是指向另外一种类型的复合类型。
定义指针类型的方法将声明符*d的形式,其中d是变量名。由于指针存放某个变量的地址,当我们需要初始化指针时,我们需要获得变量的地址(取地址符&):
指针和引用一样,指针指向的变量的类型与指针的类型必须匹配。
2.2 初始化空指针
2.3 利用指针访问对象
尽管引用和指针都可以间接访问对象,但访问方式不同,对引用的所有操作都是与之绑定的对象上进行的,无需任何符号。指针则需要使用解引用符(*)来访问该对象。
对指针解引用会得出所指的对象,因此如果给解引用的结果赋值,实际上也就是给指针所指的对象赋值。
2.4 指针与引用的区别
(1)指针本身就是一个对象,允许对指针赋值和拷贝,而且在指针的生命周期内它可以先后指向几个不同的对象。
(2)指针无须在定义时赋初值。和其他内置类型一样,在块作用域内定义的指针如果没有被初始化,也将拥有一个不确定的值。
在第一节中我们介绍了变量的定义,声明,初始化等变量基本基础知识。本节我们将讲解比较复杂的复合类型。
复合类型是指基于其他类型定义的类型,即在基础数据类型的基础上,又指明了该变量与基本数据类型有关的某种类型。本节将介绍其中两种:引用和指针。
1 引用类型
1.1 定义与初始化
引用是为变量起了另一个名字,引用类型引用另外一种类型。通过将声明符写成&d的形式来定义引用类型,其中d是声明的变量名:
int i = 0; int &ref_i= i;
在定义引用类型变量时,程序并不会给引用变量分配存储数据的空间来拷贝初始值,而是将引用和它的初始值绑定在一起,一旦初始化完成,引用将和它的初始值对象一直绑定在一起。因为无法令引用重新绑定到另一个对象,因此引用必须初始化。
1.2 说明
引用的类型都要与之绑定的对象严格匹配,而且,引用只能绑定在对象上,而不能与字面值或某个表达式的计算结果绑定在一起,除了两种例外情况:
第一种特例就是在初始化常量引用时允许用任意表达式作为初始值,只要该表达式的结果能转换成引用的类型即可。
int i = 0; const int constRef_i = i; //正确 const int constRef_i = 0; //正确 const int constRef_i = i * 2; //正确 int ref_i = 0; //错误
第二种由于超出基本概念太多,暂时不说明。
2.指针
2.1 定义
指针是指向另外一种类型的复合类型。
定义指针类型的方法将声明符*d的形式,其中d是变量名。由于指针存放某个变量的地址,当我们需要初始化指针时,我们需要获得变量的地址(取地址符&):
int i = 0; int *point_i; //未初始化的指针 int *point_i = &i; //指向i的指针
指针和引用一样,指针指向的变量的类型与指针的类型必须匹配。
2.2 初始化空指针
int *p1 = nullptr; //C++新标准 int *p1 = NULL; int *p1 = 0;
2.3 利用指针访问对象
尽管引用和指针都可以间接访问对象,但访问方式不同,对引用的所有操作都是与之绑定的对象上进行的,无需任何符号。指针则需要使用解引用符(*)来访问该对象。
对指针解引用会得出所指的对象,因此如果给解引用的结果赋值,实际上也就是给指针所指的对象赋值。
2.4 指针与引用的区别
(1)指针本身就是一个对象,允许对指针赋值和拷贝,而且在指针的生命周期内它可以先后指向几个不同的对象。
(2)指针无须在定义时赋初值。和其他内置类型一样,在块作用域内定义的指针如果没有被初始化,也将拥有一个不确定的值。
相关文章推荐
- C++ 基础学习教程 第二章 变量(1)
- Python学习入门基础教程(learning Python)--2.2 Python下的变量基础
- C++基础学习系列第一部分——变量和基本类型
- C++程序设计教程学习(1)-第一部分 编程基础
- Python基础教程学习笔记 第二章 列表和元组
- C++学习笔记 | 第二章 变量和基本类型 | (2)
- Python - 基础教程学习(第一章 & 第二章)
- C++基础学习教程(三)
- C++学习笔记 | 第二章 变量和基本类型 | (3)
- C++基础学习教程(五)
- C++学习笔记 | 第二章 变量和基本类型 | (5)
- Python基础教程学习比较----第二章 列表和元组
- Python学习入门基础教程(learning Python)--2.2.1 Python下的变量解析 .
- C++基础学习教程(八)
- C++基础教程 学习笔记(二) 数组、字符串和指针
- Python学习入门基础教程(learning Python)--2.2.1 Python下的变量解析
- 【C++基础学习】关于C++静态成员函数和变量
- C++基础学习教程(一)
- C++学习笔记 | 第二章 变量和基本类型 | (4)
- C++学习笔记 | 第二章 变量和基本类型 | (1)