![](https://img-blog.csdnimg.cn/20190927151132530.png?x-oss-process=image/resize,m_fixed,h_224,w_224)
C++程序设计语言
文章平均质量分 75
全面讲解C++所有语法和标准库组件,以及它们的设计初衷、思想、原理和局限性。
Hank_W
这个作者很懒,什么都没留下…
展开
-
C++ 第九章 语句 - 9.2 语句概述
第九章 语句9.2 语句概述9.2 语句概述这里是C++语句的形式化定义:语句:声明 表达式可选;{ 语句列表可选 }try { 语句列表可选 } 处理模块列表case 常量表达式 : 语句default : 语句break;continue;return 表达式可选;goto 标识符;标识符 : 语句选择语句循环语句选择语句:if( 条件 ) 语句if( 条件 ) 语句 else 语句switch( 条件 ) 语句循环语句:whi原创 2021-12-27 10:00:00 · 147 阅读 · 0 评论 -
C++ 第九章 语句 - 9.1 引言
第九章 语句9.1 引言9.1 引言C++提供了一组既符合传统又灵活易用的语句。基本上,与表达式和声明有关的知识要么相当有趣,要么异常复杂。一个声明就是一条语句,表达式的末尾加上一个分号也是一条语句。与表达式不同,语句本身没有值。语句的主要作用是指定执行的顺序。例如:a = b + c; //表达式语句if(a == 7) //if语句b = 9; //当且仅当a == 7时,执行这条语句从逻辑角度来说,a = b + c的执行发生在if之前,这符合人们的预期。为了提高程序的性能,编原创 2021-12-26 10:00:00 · 163 阅读 · 0 评论 -
C++ 第八章 结构、联合与枚举 - 8.4 枚举
第八章 结构、联合与枚举8.4 枚举8.4.1 enum class8.4.2 普通的enum8.4.3 未命名的enum8.4 枚举枚举(enumeration)类型用于存放用户指定的一组整数值(§ iso.7.2)。枚举类型的每种取值各自对应一个名字,我们把这些值叫做枚举值(enumerator)。例如:enum class Color{red, green, blue};上述代码定义了一个名为Color的枚举类型,它的枚举值是red、green和blue。“一个枚举类型”简称“一个enum”原创 2021-12-25 10:00:00 · 279 阅读 · 0 评论 -
C++ 第八章 结构、联合与枚举 - 8.3 联合
第八章 结构、联合与枚举8.3 联合8.3.1 联合和类8.3.2 匿名union8.3 联合union是一种特殊的struct,它的所有成员都分配在同一个地址空间上。因此,一个union实际占用的空间大小与其最大的成员一样。自然地,在同一时刻union只能保存一个成员的值。例如,考虑一个符号表项存放名字和值对的情况:enum Type{str, num};struct Entry{ char* name; Type t; char* s; //如果t == str,使用s int i原创 2021-12-24 10:00:00 · 264 阅读 · 0 评论 -
C++ 第八章 结构、联合与枚举 - 8.2 结构
标题在这里插入代码片原创 2021-12-15 10:00:00 · 198 阅读 · 0 评论 -
C++ 第八章 结构、联合与枚举 - 8.1 引言
第八章 结构、联合与枚举8.1 引言8.1 引言用户自定义类型是能否有效使用C++的关键,本章介绍三种用户自定义类型的初级形式:struct(结构)是由任意类型元素(即成员,member)构成的序列。union是一种struct,同一时刻只保存一个元素的值。enum(枚举)是包含一组命名常量(称为枚举值)的类型enum class(限定作用域的枚举类型)是一种enum,枚举值位于枚举类型的作用域内,不存在向其他类型的隐式类型转换。这些类型在C++的早期版本中就已经存在了。它们主要关注数据如原创 2021-12-14 10:00:00 · 164 阅读 · 0 评论 -
C++ 第七章 指针、数组与引用 - 7.7 引用
第七章 指针、数组与引用7.7 引用7.7.1 左值引用7.7.2 右值引用7.7.3 引用的引用7.7.4 指针与引用7.7 引用通过使用指针,我们就能以很低的代价在一个范围内传递大量数据,与直接拷贝所有数据不同,我们只需要传递指向这些数据的指针的值就行了。指针的类型决定了我们能对指针所指的对象进行哪些操作。使用指针与使用对象名存在以下差别:语法形式不同,*p和p->m分别取代了obj和obj.m。同一个指针在不同时刻可以指向不同对象。使用指针要比直接使用对象更小心:指针的值可能是nul原创 2021-12-13 10:00:00 · 290 阅读 · 0 评论 -
C++ 第七章 指针、数组与引用 - 7.6 指针与所有权
第七章 指针、数组与引用7.6 指针与所有权7.6 指针与所有权资源必须先分配后释放(见5.2节)。我们用new分配内存,用delete释放内存(见11.2节);用fopen()打开文件,用fclose()关闭文件(见43.2节),因此内存和文件都是资源。指针是最常用的资源句柄。这一点不太容易理解,毕竟在程序中指针随处可见,而且作为资源句柄的指针和不作为资源句柄的指针似乎没什么差别。例如:void confused(int* p){ //释放掉p?}int global{7};void f(原创 2021-12-12 10:00:00 · 433 阅读 · 0 评论 -
C++ 第七章 指针、数组与引用 - 7.5 指针与const
第七章 指针、数组与引用7.5 指针与const7.5 指针与constC++提供了两种与“常量”有关的概念:constexpr:编译时求值(见2.2.3节和10.4节)。const:在当前作用域内,值不发生改变(见2.2.3节)。基本上,constexpr的作用是指示或确保在编译时求值,而const的主要任务是规定接口的不可修改性。本节主要关注第二点:接口说明。很多对象的值一旦初始化就不会再改动:使用符号化常量的代码比直接使用字面值常量的代码更易维护。我们经常通过指针读取数据,但是很原创 2021-12-11 10:00:00 · 272 阅读 · 0 评论 -
C++ 第七章 指针、数组与引用 - 7.4 数组中的指针
第七章 指针、数组与引用7.4 数组中的指针7.4.1数组漫游7.4.2 多维数组7.4.3 传递数组7.4 数组中的指针在C++语言中,指针与数组密切相关。数组名可以看成是指向数组首元素的指针,例如:int v[] = {1,2,3,4};int* p1 = v; //指向数组首元素的指针(隐式转换)int* p2 = &v[0]; //指向数组首元素的指针int* p3 = v+4; //指向数组尾后位置的指针或者表示成图形的形式:令指针指向数组的最后一个元素的下一个位置(原创 2021-12-10 11:28:47 · 619 阅读 · 0 评论 -
C++ 第七章 指针、数组与引用 - 7.3 数组
第七章 指针、数组与引用7.3 数组7.3.1 数组的初始化器7.3.2 字符串字面值常量7.3.2.1 原始字符串7.3.2.2 大字符集7.3 数组假设有类型T,T[size]的含义是“包含size个T类型元素的数组”。元素的索引值范围是0到size-1。例如:float v[3]; //包含3个float的数组,分别是v[0]、v[1]、v[2]char* a[32]; //包含32个char指针的数组,依次是a[0]...a[31]可以使用下标运算符[]或指针(运算符*或运算符[],见原创 2021-12-09 12:06:24 · 598 阅读 · 0 评论 -
C++ 第七章 指针、数组与引用 - 7.2 指针
第七章 指针、数组与引用7.2 指针7.2.1 void*7.2.2 nullptr7.2 指针对于类型T来说,T是表示“指向T的指针”的类型。换句话说,T类型的变量能存放T类型对象的地址。例如:char c = ‘a’;char* p = &c; //p存放着c的地址,&是取地址运算符这两条语句的图形化表示是:对指针的一个基本操作是解引用(dereferencing),即引用指针所指的对象。这个操作也称为间接取值(indirection)。解引用运算符是个前置一元运算符,原创 2021-12-08 16:30:07 · 646 阅读 · 0 评论 -
C++ 第七章 指针、数组与引用 - 7.1 引言
第七章 指针、数组与引用7.1 引言7.1 引言本章介绍C++语言中指示某块内存区域的基本机制。显然,我们能通过名字使用对象。然而在C++中,大多数对象都“有身份”;也就是说对象位于内存的某个地址中,如果我们知道对象的地址和类型,就能访问它。在C++语言中存放及使用内存地址是通过指针和引用完成的。...原创 2021-12-08 16:25:13 · 302 阅读 · 0 评论 -
C++ 第六章 类型与声明 - 6.5 类型别名
第六章 类型与声明6.5 类型别名6.5 类型别名有时,我们需要为某种类型起个新名字。可能的动机包括:原来的名字太长、太复杂或者太难看(在某些程序员眼中)。某项程序设计技术要求在同一段上下文中,不同类型有相同的名字。在某处提及某种类型仅仅是为了便于后期维护。例如:using Pchar = char*; //字符串指针using PF = int(*)(double); //函数指针。该函数接受一个double且返回一个int相似类型可以定义同一个名字作为成员别名:templat原创 2021-12-08 15:12:09 · 171 阅读 · 0 评论 -
C++ 第六章 类型与声明 - 6.4 对象和值
第六章 类型与声明6.4 对象和值左值和右值对象的生命周期6.4 对象和值我们可以分配并使用没有名字的对象(比如用new创建对象),也能为某些看起来不太寻常的表达式赋值(如,*p[a+10] = 7)。因此,我们需要用一个名字来表示“内存中的某个东西”。这就是对象一词最简单和最基本的含义。换句话说,对象(object)是指一块连续存储区域,左值(lvalue)是指向对象的一条表达式。“左值”的字面意思是“能用在赋值运算符左侧的东西”,但其实不是所有左值都能用在赋值运算符左侧,左值也有可能指向某个常量(见原创 2021-12-08 15:54:21 · 141 阅读 · 0 评论 -
C++ 第六章 类型与声明 - 6.3 声明
第六章 类型与声明6.3 声明6.3.1 声明的结构6.3.2 声明多个名字6.3.3 名字6.3.3.1 关键字6.3.4 作用域6.3.5 初始化6.3.5.1 缺少初始化器6.3.5.2 初始化器列表6.3.6 推断类型:auto和decltype()6.3.6.1 auto类型修饰符6.3.6.2 auto与{ }列表6.3.6.3 decltype()修饰符6.3 声明在C++程序中要想使用某个名字(标识符),必须先对其进行声明。换句话说,我们必须指定它的类型以便编译器知道这个名字对应的是何种原创 2021-12-08 15:05:31 · 698 阅读 · 0 评论 -
C++ 第六章 类型与声明 - 6.2 类型
第六章 类型与声明6.2 类型6.2.1 基本类型6.2.2 布尔值6.2.3 字符类型6.2.3.1 带符号字符和无符号字符6.2.3.2 字符字面值常量6.2.4 整数类型6.2.4.1 整数字面值常量6.2.4.2 整数字面值常量的类型6.2.5 浮点数类型6.2.5.1 浮点数字面值常量6.2.6 前缀和后缀6.2.7 void6.2.8 类型尺寸6.2.9 对齐6.2 类型观察下面的式子:x = y + f(2);要想让这个式子在C++程序中有效,必须提前声明好名字x、y、f。换句话说,原创 2021-12-08 13:56:46 · 153 阅读 · 0 评论 -
C++ 第六章 类型与声明 - 6.1 ISO C++标准
第六章 类型与声明6.1 ISO C++标准6.1.1 实现6.1.2 基本源程序字符集6.1 ISO C++标准C++语言和标准库对应的ISO标准是ISO/IEC 14882:2011,本书记为§iso.23.3.6.1。如果读者担心书中某处的内容不准确、不完整,或者存在错误,请随时参阅ISO标准文档。不过对于大多数非专业人员来说,要想读懂标准文档可不像看看参考书那么简单。即使在编程时你严格遵循C++语言和库的规范,也不能确保写出的代码一定是简洁、高效和可移植的。所谓“标准”不能用来判断一段代码是好原创 2021-12-08 12:18:36 · 633 阅读 · 0 评论