- 博客(18)
- 收藏
- 关注
原创 函数指针.
函数指针函数的地址是存储其机器语言代码的内存的开始地址.可以编写一个将另一个函数的地址作为参数的函数. 这样第一个函数将能够找到第二个函数, 并运行它. 与直接调用相比, 这种方法很笨拙, 但它允许在不同的时间传递不同函数的地址, 这意味着可以在不同的时间使用不同的函数.1.函数指针的基础知识1.1 获取函数的地址只要使用函数名即可获得函数地址. 也就是说, 如果think()是一个函数, 那么think就是它的地址.1.2 声明函数指针通常, 要声明指向特定类型的函数的指针, 可以首先编写这
2022-01-26 20:44:23 622
原创 C++Primer第四章(4)赋值运算符
4.4 赋值运算符赋值运算符的左侧运算对象必须是一个可修改的左值.赋值运算的结果是它的左侧运算对象,并且是一个右值. 相应的, 结果的类型就是左侧运算对象的类型.如果赋值运算符的左右两个运算对象类型不同, 则右侧运算对象将转换成左侧运算对象的类型.int k;k = 3.14159; //结果:类型是int,值是3C++11新标准允许使用花括号括起来的初始值列表作为赋值语句右侧运算对象. 如果左侧运算对象是内置类型, 那么初始值列表最多只能包含一个值, 而且该值即使转换的话其所占空间也不应
2022-01-26 20:06:40 660
原创 C++Primer第四章(3)逻辑和关系运算符
4.3 逻辑和关系运算符关系运算符作用于算数类型或指针类型, 逻辑运算符作用于任意能转换成布尔值的类型. 逻辑运算符和关系运算符的返回值都是布尔类型. 对于这两类运算符磊说, 运算对象和求值结果都是右值.逻辑与和逻辑或运算符逻辑与运算符和逻辑或运算符都是先求左侧运算对象的值再求右侧运算对象的值, 当且仅当左侧运算对象无法确定表达式的结果时才会计算右侧运算对象的值, 这种策略称为短路求值对于逻辑与运算符来说,当且仅当左侧运算对象为真时才对右侧运算对象求值对于逻辑或运算符来说, 当且仅当左侧运算对
2022-01-22 19:34:40 487
原创 C++Primer第四章(2)算术运算符
4.2 算术运算符 上表中运算符和优先级从上到下依次降低.上面的所有运算符都满足左结合律, 意味着当优先级相同时按照从左向右的顺序进行组合.除非另作特殊说明, 算术运算符都能作用于任意算术类型, 以及任意能转换成为算术类型的类型.算术运算符的运算对象和求值结果都是右值.布尔值不应该参与运算 bool b = true; bool b2 = -b; //b2是true如上, 布尔变量b的值为真, 参与运算时将被提升成整数值1, 对它求负后的结果是-1. 将-1再转换回布尔值并将其作为b2的
2022-01-22 19:33:21 263
原创 第一章 计算机系统概论
文章目录第一章 计算机系统概论1.1 计算机系统简介1.1.1 计算机的软硬件概念1.2 计算机的基本组成1.2.1 冯·诺依曼计算机的特点主存储器(主存或内存)运算器控制器1.3 计算机硬件的主要技术指标第一章 计算机系统概论1.1 计算机系统简介1.1.1 计算机的软硬件概念1.2 计算机的基本组成1.2.1 冯·诺依曼计算机的特点计算机由运算器, 存储器, 控制器, 输入设备和输出设备五大部件组成指令和数据以同等地位存放于存储器内, 并可按地址寻访指令和数据均用二进制数表示指令由
2022-01-22 15:51:02 150
原创 C++ new和delete的使用
文章目录C++ new 和 delete1. 使用new动态分配和初始化对象2. 内存耗尽3.释放动态内存3.1 指针值和delete3.2 delete之后重置指针值C++ new 和 delete在C++中, 通过new和delete管理动态内存.new : 在动态内存中为对象分配空间并返回一个指向该对象的指针delete : 接受一个动态对象的指针, 销毁该对象, 并释放与之关联的内存1. 使用new动态分配和初始化对象在堆中分配的内存是无名的, 因此new无法为其分配的对象命名, 而
2021-12-11 23:00:26 1003
原创 C++Primer第4章(1)基础
文章目录4.1 基础4.1.1 基本概念组合运算符和运算对象运算对象转换重载运算符左值和右值4.1.2 优先级与结合律括号无视优先级和结合律优先级和结合律有何影响4.1.3 求值顺序求值顺序, 优先级, 结合律4.1 基础4.1.1 基本概念C++定义了一元运算符和二元运算符.一元运算符作用于一个运算对象. 如取地址符(&)和解引用符(*)二元运算符作用于两个运算对象. 如相等运算符(==)和乘法运算符(*)除此之外, 还有一个作用于三个运算对象的三元运算符(?????// ?:
2021-12-08 11:37:33 564
原创 C++Primer第3章(6)多维数组
文章目录3.6 多维数组多维数组的初始化多维数组的下标引用使用范围for语句处理多维数组指针和多维数组类型别名简化多维数组的指针3.6 多维数组严格来说, C++中没有多维数组, 通常所说的多维数组其实是数组的数组.当一个数组的元素仍然是数组时, 通常使用两个维度来定义它: 一个维度表示数组本身大小, 另外一个维度表示其元素(也是数组)大小int ia[3][4]; //大小为3的数组,每个元素是含有4个整数的数组对于二维数组来说, 通常把第一个维度称作行, 第二个维度称作列多维数组的初始化
2021-12-06 13:03:46 765
原创 C++Primer第3章(5)数组
文章目录3.5 数组3.5.1 定义和初始化内置数组显式初始化数组元素字符数组的特殊性不允许拷贝和赋值理解复杂的数组声明3.5.2 访问数组元素检查下标的值3.5.3 指针和数组指针也是迭代器标准库函数begin和end指针运算解引用和指针运算的交互下标和指针3.5.4 C风格字符串C标准库String函数比较字符串目标字符串的大小由调用者指定3.5.5 与旧代码的接口混用string对象和C风格字符串使用数组初始化vector对象3.5 数组 数组是一种类似于标准库类型vector的数据结构,但是在
2021-12-05 11:51:07 417
原创 C++Primer第3章(4)迭代器介绍
文章目录3.4 迭代器介绍3.4.1 使用迭代器迭代器运算符将迭代器从一个元素移动到另外一个元素迭代器类型begin和end运算符结合解引用和成员访问操作某些对vector对象的操作会使迭代器失效3.4.2 迭代器运算迭代器的算术运算3.4 迭代器介绍 迭代器提供了对对象的间接访问.就迭代器而言,其对象时容器中的元素或者string对象中的字符.使用迭代器可以访问某个元素,迭代器也能从一个元素移动到另外一个元素.迭代器有有效和无效之分,有效的迭代器或者指向某个元素,或者指向容器中尾元素的下一位置:其他
2021-12-02 13:39:22 1260
原创 C++Primer第3章(3)标准库类型vector
文章目录3.3 标准库类型vector3.3.1 定义和初始化vector对象值初始化列表初始值还是元素数量3.3.2 向vector对象中添加元素向vector对象添加元素蕴含的编程假定3.3.3 其他vector操作计算vector内对象的索引不能用下标形式添加元素3.3 标准库类型vector 标准库类型vector表示对象的集合,其中所有对象的类型都相同.集合中的每个对象都有一个与之对应的索引,索引用于访问对象. 使用vector需要包含适当的头文件#include<vector&
2021-11-30 12:28:15 855
原创 C++Primer第3章(2)标准库类型string
文章目录3.2 标准库类型string3.2.1 定义和初始化string对象直接初始化和拷贝初始化3.2.2 string对象上的操作读取未知数量的string对象使用getline读取一整行string的empty和size操作string::size_type类型比较string对象为string对象赋值两个string对象相加字面值和string对象相加3.2.3 处理string对象中的字符处理每个字符?使用基于范围的for语句3.2 标准库类型string 标准库类型string表示可变长
2021-11-28 08:58:10 490
原创 C++Primer第2章(5)处理类型
文章目录2.5 处理类型2.5.1 类型别名指针,常量和类型别名2.5.2 auto类型说明符复合类型、常量和auto2.5.3 decltype类型指示符decltype和引用2.5 处理类型2.5.1 类型别名定义类型别名的传统方法是关键字typedeftypedef double wages;typedef wages base, *p;新标准还一种方法,就是用别名声明来定义类型的别名using SI = Sales_item; //SI是Sales_item的同义词指针,常量和类
2021-11-27 09:40:34 137
原创 C++Primer第2章(4)const限定符
文章目录2.4 const限定符初始化和const默认状态下,const对象仅在文件内有效2.4.1 const的引用初始化和对const的引用对const的引用可能引用一个非const的对象2.4.2 指针和constconst指针2.4.3 顶层const2.4.4 constexpr和常量表达式constexpr变量字面值类型指针和constexpr2.4 const限定符 const对象一旦创建后其值就不能再改变,所以const对象必须初始化,初始值可以是任意复杂的表达式.const int
2021-11-26 21:23:05 699
原创 C++Primer第2章(3)复合类型
2.3 复合类型 复合类型是指基于其他类型定义的类型.本节将介绍其中两种:引用和指针.2.3.1 引用C++11中新增了一种引用:“右值引用”,这种引用主要用于内置类.当我们使用术语"引用"时,指的其实是"左值引用". 引用为对象起了另外一个名字,引用类型引用(refers to)另外一种类型.通过将声明写成&d的形式来定义引用类型,其中d是声明的变量名.int val = 1024;int &refVal = ival; //refVal指向ival(是ival的另一个
2021-11-26 18:54:59 418
原创 C++Primer第2章(2)变量
文章目录2.2 变量2.2.1 变量定义初始值列表初始化默认初始化2.2.2 变量声明和定义的关系2.2.3 标识符变量命名规范2.2.4 名字的作用域嵌套的作用域2.2 变量 变量提供一个具名的,可供程序操作的存储空间.C++中的每个变量都有其数据类型,数据类型决定着变量所占内存空间的大小和布局方式,该控件能存储的值的范围,以及变量能参与的运算.2.2.1 变量定义 变量定义的基本形式是:首先是类型说明符(type specifier ),随后紧跟由一个或多个变量名组成的列表,其中变量名以逗号
2021-11-25 19:37:26 392
原创 C++Primer第2章(1)基本内置类型
文章目录2.1 基本内置类型2.1.1 算术类型带符号类型和无符号类型2.1.2 类型转换含有无符号类型的表达式2.1.3 字面值常量整形和浮点型字面值字符和字符串字面值转义序列指定字面值的类型布尔字面值和指针字面值布尔字面值和指针字面值数据类型决定了程序中数据和操作的意义.2.1 基本内置类型 C++定义了一套包括算术类型和空类型在内的基本数据类型.2.1.1 算术类型 算术类型分为两类:整型(包括字符和布尔类型在内)和浮点型. C++语言规定一个int至少和一个short一样大,一个l
2021-11-25 18:57:00 291
空空如也
空空如也
TA创建的收藏夹 TA关注的收藏夹
TA关注的人