
C++ Primer
C++ Primer第五版,记些小笔记
W24-
这个作者很懒,什么都没留下…
展开
-
C++ string 操作简介
这里指的是 C++ 标准库类型 string,表示可变长的字符序列,使用 string 类型必须首先包含头文件 <string>,作为标准库的一部分,string 定义在命名空间 std 中。在用 C++ 编程时,可以优先考虑使用 string 来表示及处理字符串,因为它比字符数组更简单,且对库的实现者做出了一些性能上的需求。因此,标准库类型对于一般应用场合来说有足够的效率。定义和初始化 string 对象可以进行默认初始化、直接初始化和拷贝初始化。可以通过默认的方式初始化一个 st原创 2020-12-25 22:00:04 · 242 阅读 · 0 评论 -
C++ 头文件保护符
在 C++ 中我们写头文件时经常需要使用 #include 来包含其他头文件,使用该头文件的程序为了使用其他头文件的内容,就需要再一次包含其他头文件。所以就会出现同一头文件被多次包含进同一源文件的情况。例如:一个头文件中用到 string 类型的变量,而包含这个头文件的程序中也用到 string 类型的变量,这个时候 string 头文件就被包含了两次:一次是通过程序本身直接包含,另一次随着包含头文件被隐式地包含进来的。有必要在书写头文件时做适当处理,使其遇到多次包含的情况也能安全和正常的工作。确保头文原创 2020-11-28 19:28:09 · 1432 阅读 · 0 评论 -
C++ 顶层const及底层const的概念
首先,const 是一个限定符,被它修饰的变量的值不能改变。对于一般的变量来说,其实没有顶层 const 和底层 const 的区别,而只有向指针这类复合类型的基本变量,才有这样的区别。参考常量指针与指向常量的指针,指针本身是一个对象,它又可以指向另外一个对象。因此,指针本身是不是常量以及指针所指的是不是一个常量就是两个相互独立的问题。用名词 顶层const(top-level const) 表示指针本身是个常量,而用名词 底层const(low-level const) 表示指针所指的对象是一个常量。原创 2020-11-27 10:47:05 · 525 阅读 · 0 评论 -
C++ 常量指针与指向常量的指针详解
常量指针与指向常量的指针不同,常量指针指的是指针自身是个常量,指向常量的指针表示该指针指向的对象是个常量。表示方法如下:常量指针:int *const p指向常量的指针:const int *p指向常量的常量指针:const int *const p指向常量的指针类似于“常量引用”(即指向 const 变量的引用,或指向常量的引用),指向常量的指针不能用于改变其所指对象的值。(1)要想存放常量对象的地址,只能使用指向常量的指针。const double dval = 3.14; /原创 2020-11-24 20:35:35 · 1261 阅读 · 0 评论 -
C++ 常量引用用法详解
“常量引用”其实是“对 const 的引用”的简称。顾名思义,它把它所指向的对象看作是常量(不一定是常量),因此不可以通过该引用来修改它所指向的对象的值。严格来说,并不存在常量引用,因为引用不是一个对象,所以我们没法让引用本身恒定不变。事实上,由于 C++ 语言并不允许随意改变引用所绑定的对象,所以从这层意思上理解所有的引用又都算是常量。与普通引用不同的是,“常量引用”(对 const 的引用)不能被用作修改它所绑定的对象。(1)指向 const 变量时,一定要使用“常量引用”,而不能是一般的引用。原创 2020-11-23 20:37:10 · 18941 阅读 · 9 评论 -
C++ void指针(void*)简介
void* 是一种特殊的指针类型,可用于存放任意对象的地址。一个 void* 指针存放着一个地址,这一点和其他指针类似。在介绍 void 指针前,简单说一下 void 关键字使用规则:如果函数没有返回值,那么应声明为 void 类型;如果函数无参数,那么应声明其参数为 void;(常省略)如果函数的参数或返回值可以是任意类型指针,那么应声明其类型为 void* ;void 的字面意思是“无类型”,void*则为“无类型指针”,void不能代表一个真实的变量,void体现了一种抽象。(1)任何原创 2020-11-16 10:36:37 · 26384 阅读 · 5 评论 -
C++ 指针使用时注意的问题(区别于引用)
指针(pointer)本身就是一个变量,其值是另一个变量的地址。说到指针,就涉及到指针的两个运算符(&,*):取地址运算符 &,& 是一元运算符,返回操作数的内存地址。例如,如果 val 是一个整型变量,则 &val 是它的地址。返回的结果是一个地址。间接寻址运算符 *,它是 & 运算符的补充。* 也是一元运算符,返回操作数所指定地址的变量的值。返回的结果五花八门,*p 类型是该指针 p 指向的类型。运算时都是从右往左顺序进行的。int a = 12;原创 2020-11-15 21:46:56 · 357 阅读 · 0 评论 -
C++ 引用简介及引用定义注意事项
引用(reference) 为对象起了另外一个名字,引用并非对象,相反的,它只是为一个已经存在的对象所起的另外一个名字。通过将声明符写成 &d 的形式来定义引用类型,其中 d 是声明的变量名。引用即别名,定义了一个引用之后,对其进行的所有操作都是在与之绑定的对象上进行的:为引用赋值,实际上是把值赋给了与引用绑定的对象;获取引用的值,实际上是获取了与引用绑定的对象的值;同理,以引用作为初始值,实际上是以与引用绑定的对象作为初始值。int ival = 1024;int &re原创 2020-11-13 15:52:22 · 1913 阅读 · 0 评论 -
C++ 变量声明(extern)与定义的关系
为了支持 分离式编译(separate compilation) 机制,C++ 语言将声明和定义分开来,声明(declaration) 使得名字为程序所知,一个文件如果想使用别处定义的名字则必须包含对那个名字的声明;而定义(definition) 负责创建与名字关联的实体。如果要在多个文件中使用同一个变量,就必须将声明和定义分离。变量定义变量定义:负责创建与名字关联的实体,用于为变量分配存储空间,还可为变量指定初始值。程序中,变量有且仅有一个定义。变量定义的基本形式是:首先是类型说明符(type s原创 2020-11-13 10:45:44 · 798 阅读 · 0 评论 -
C++ 名字的作用域及嵌套的作用域
不论是在程序的什么位置,使用到的每个名字都会指向一个特定的实体:变量、函数、类型等。然而,同一个名字如果出现在程序的不同位置,也可能指的是不同实体。作用域(Scope) 是程序的一部分,在其中名字有其特定的含义。C++ 语言的作用域都以花括号分隔。嵌套的作用域作用域能彼此包含,被包含(或者说被嵌套)的作用域称为内层作用域(inner scope),包含着别的作用域的作用域称为外层作用域(outer scope)。作用域中一旦声明了某个名字,它所嵌套的所有作用域中都能访问该名字。同时,允许在内层作用域原创 2020-11-12 16:14:07 · 796 阅读 · 0 评论 -
C++ 标识符及变量命名规范
标识符C++ 标识符是用来标识变量、函数、类、模块,或任何其他用户自定义项目的名称。C++的标识符(identifier) 由字母、数字和下画线组成,其中必须以字母或下画线开头。标识符的长度没有限制,但是对大小写字母敏感:// 定义4个不同的int变量,说明了C++是区分大小写的编程语言int somename, someName, SomeName, SOMENAME; int _; // 仅包含下画线的标识符,合法。double Double;原创 2020-11-11 19:39:33 · 6277 阅读 · 0 评论 -
C++ 初始值及默认初始化
文章目录初始值默认初始化内置类型的默认初始化类类型的默认初始化初始值在这里,对象(object) 是指一块能存储数据并具有某种类型的内存空间,而不单单指在与类有关的场景下使用的“对象”这个词。当对象在创建时获得了一个特定的值,我们说这个对象被初始化(initialized)。初始化不是赋值,初始化的含义是创建变量时赋予其一个初始值;而赋值的含义是把对象的当前值擦除,而以一个新值来替代。默认初始化如果定义变量时没有指定初值,则变量被默认初始化(default initialized),此时变量被赋原创 2020-11-11 15:55:29 · 8490 阅读 · 3 评论 -
C++ 字面值常量及其数据类型
字面值常量一个形如 42 的值被称作字面值常量(literal),这样的值一望而知。每个字面值常亮都对应一种数据类型,字面值常量的形式和值决定了它的数据类型。整型和浮点型字面值我们可以将整型字面值写作十进制数、八进制数或十六进制数的形式。以 0 开头的整数表示八进制数,以 0x 或 0X 开头的代表十六进制数。例如,我们能用下面的任意一种形式来表示数值 20:20 /* 十进制 */ 024 /* 八进制 */ 0x14 /* 十六进制 */十进制字面值是带符号数,类型是原创 2020-11-11 10:26:29 · 1244 阅读 · 0 评论 -
C++ 类型转换,切勿混用无符号数和有符号数
文章目录类型转换基本内置类型转换的原则含有无符号类型的表达式类型转换基本内置类型转换的原则类型所能表示的值的范围决定了转换的过程:当我们把一个非布尔类型的算数值赋给布尔类型时,初始值为 0 则结果为 false,否则结果为 true;例1:bool b = 42; // b 为 true例2:int i = 42;if(i) { // if 条件的值将为 true i = 0;}当在程序的某处使用了一种算术类型的值原创 2020-11-11 09:54:50 · 1222 阅读 · 0 评论 -
C++ 基本数据类型及有无符号类型
基本内置类型C++ 定义了一套包括算数类型和空类型在内的基本数据类型。其中算数类型包含了字符、整型数、布尔值和浮点数;空类型不对应具体的值,仅用于一些特殊场合,如当函数不返回任何值时使用空类型作为返回类型。算数类型算数类型分为两类:整型(integral type,包括字符和布尔类型在内)和浮点型。算数类型的尺寸(也就是该类型数据所占的比特数)在不同机器上有所差别,某一类型所占的比特数不同,它所能表示的数据范围也就不同。整型布尔类型(bool)的取值是真(true)或者假(false)。C+原创 2020-11-10 18:28:18 · 5409 阅读 · 1 评论