C++ Primer Plus第五版笔记(p101-150)

news2024/11/14 18:43:23

1 数组和vector类似,数组的大小确定不变,不能随意向数组中增加元素。
2 数组维度必须是一个常量表达式
3 不允许用auto关键字由初始值列表推断类型,另外和vector一样,数组的元素应该为对象,因此不存在引用的数组
4 字符串字面值结尾处还有一个空字符
5 不能用一个数组初始化另一个数组
6 某些编译器支持数组的赋值,这就是编译器扩展,但是最好不要使用非标准特性,防止在其他编译器上无法工作

7 int *ptrs[10] ptrs 是含有10个整形指针的数组
int(*Parray)[10] =&arr ; parray 指向一个含有10个整数的数组
int (&arrRef) [10]=arr; arrRef引用一个含有10个整数的数组
由内向外读

8 数组下表通常被定义为size_t类型(机器相关的无符号类型),在cstddef头文件中定义了size_t类型
9 定义在函数内部的整型数组不会初始化
10 string *p2 =nums; 等价于 p2 =&nums[0];
11 auto ia2(ia) //ia2 表示一个整形指针,指向ia的第一个元素 p105
12 int ia[] ={0,1,2,3,4,5,6,7,8,9};

decltype(ia)返回的类型是由10个整数构成的数组
decltype(ia) ia3={1,2,3,4,5,6,7,8,9,10};

13 标准库函数begin 和 end 不是类函数,所以使用begin(数组名)表示指向首元素的指针
end(数组名)表示指向尾元素下一个位置的指针

14 尾后指针不能解引用以及递增操作
15 两个指针相减的类型是ptrdiff_t的标准库文件,和size_t类似,ptrdiff_t也是定义在cstddef头文件中机器相关的类型,带符号

16 int p =&ia[2]; p108
指针加下表
p[-2]=
(p-2)
int k =p[-2] p[-2] 表示ia[0]

17 内置下标运算符所用的索引值不是无符号类型,这一点和vector string 不同
18
随机数生成

生成随机数种子
添加ctime,cstdlib头文件
在这里插入图片描述
srand((unsigned)time (NULL));
a[i]=rand()%10;//每次循环生成10以内的随机数并添加到a中
19 c风格字符串函数p109
头文件 cstring
strlen§ 返回字符串长度,空字符不算在内,遇到空字符停下来,p内必须要有空字符
strcmp(p1,p2) 比较两个字符串大小
strcat(p1,p2) 将p2附加到p1之后,返回p1
strcpy(p1,p2) 将p2拷贝给p1,返回p1

20 以列表初始化方式赋值的c风格字符串和以字符串字面值赋值的有所区别,后者会在字符串最后额外增加一个空字符表示字符串的结束,前者不会这么做

在这里插入图片描述

21 指针加法没有意义,减法如果指向同一个数组,那么表示所指元素在数组中的距离

22 string 下c风格的成员函数 c_str
const char *str=s.c_str();
c_str()返回的是一个c风格的字符串,函数返回的结果是一个指针,该指针指向一个以空字符结束的字符数组,而这个数组所存的数据恰好和string对象一样 p111

23 使用数组初始化vector对象
只用将数组的头,尾后指针传给容器的对象即可

24多使用string而避免使用c风格的基于数组的字符串
25
在这里插入图片描述

26 数组大小从1 开始,索引从0开始

27 如果表达式含有的下表运算符数量比数组的维度小,则表达式的结果将是给定索引处的一个内层数组

int (&row) [4] =ia [1]; 把row绑定到ia第二个4元素数组上

28 引用类型做循环变量。还有一个原因是防止数组自动转成指针
所以要使用for语句处理多维数组,除了最内层的循环外,其他所有循环控制变量都应该是引用类型

29 通过decltype或者auto可以避免在数组前面加上一个指针类型 p115

30 用begin end处理多维数组的遍历

31
理解这个方式
在这里插入图片描述

32
在这里插入图片描述

33 一元运算符和二元运算符,三元运算符的区别
34 当运算符作用于类运算对象时,用户可以自行定义它的含义,因为这种自定义的过程事实上是为已存在的运算符赋予了另外一层含义,所以称它为重载运算符

35 左值 右值区别p121
当一个对象用作右值时,用的是对象的值(内容);当对象被用作左值的时候,用的是对象的身份

36 取地址符是一个作用于一个左值运算对象,返回一个指向该运算对象的指针,这个指针是一个右值;

内置解引用
下标运算符
迭代器解引用运算符
string&vector的下表运算符
内置类型和迭代器的递增递减运算符

的求值结果都是左值

37 因为解引用运算符生成左值,假设p的类型是int * 那么 decltype(*p)的结果是int &
因为取地址运算符生成右值 所以decltype(&p) 指向整型指针的指针 (对指针求地址)

38 求值顺序上,&& 运算符先算左侧运算对象的值,只有为真才会继续求右侧的

39 在表达式求值前,小整数类型的运算对象会被提升成大整数类型,所有运算对象最终会转换成同一个类型

40 短路求值 p126
41 进行比较时除非比较的对象时布尔类型,否则不要使用布尔字面值true 和false作为运算对象

42 赋值运算符的优先级低于关系运算符的优先级
43 前置和后置递增递减的区别 p131
44 建议养成使用前置的习惯
45 cout<<*iter++<<endl; 输出未+1的值,指针指向下一位

46 嵌套条件运算符 p134
47 小于运算符的优先级低于移位运算符
48 右结合律,左结合律

49 位运算符表 p136
位求反
位求异或

50 bitset标准库可以表示任意大小的二进制位集合
51 sizeof 运算符 p139
返回一个表达式或者一个类型名字所占的字节数
sizeof (type)
或者 sizeof expr
sizeof不会实际求运算的对象的值,并且不用解引用指针也能知道运算对象的类型

52 对数组执行sizeof运算得到整个数组所占的空间大小,等价于对所有元素执行一次sizeof并把所得结果求和

53 sizeof(ia)/sizeof(*ia)返回ia的元素数量
54
在这里插入图片描述

55 运算符的运算对象将转换成最宽的类型,当表达式既有整数类型也有浮点类型时,整数值将转换成相应的浮点类型 p143
不一样比int小提升成int
(同一类型)带符号数转换成不带符号数
(不同类型)带符号数和不带符号数需要根据所占空间大小进行转换
56 隐式类型转换,指向任意非常量的指针转换成void *,指向任意对象的指针转换成const void *

57 允许将非常量转换为const 的引用,以及非常量的地址转换为常量的地址,单不允许将const转换为非常量,因为这样会删除底层const

58 旧式地强制类型转换,与新式的强制类型换不同 p145
cast-name(expression)
static_cast const_cast(只改变常量属性,有重载函数的时候可以使用)
dynamic_cast 支持运行时的类型识别
59 使用 reinterpret_cast比较危险 p146

60 避免使用强制类型转换!
61 运算符优先级表
p147

62
在这里插入图片描述

63 关于逗号运算符 p150

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处:http://www.coloradmin.cn/o/59813.html

如若内容造成侵权/违法违规/事实不符,请联系多彩编程网进行投诉反馈,一经查实,立即删除!

相关文章

7. TTL 延迟队列

二八佳人体似酥&#xff0c;腰间仗剑斩愚夫。虽然不见人头落&#xff0c;暗里教君骨髓枯。 创建两个队列 QA和 QB&#xff0c;两者队列 TTL 分别设置为 10S 和 40S&#xff0c;然后在创建一个交换机 X和死信交 换机 Y&#xff0c;它们的类型都是 direct&#xff0c;创建一个死信…

SpringBoot_项目打包部署

SpringBoot项目可以是jar类型的maven项目&#xff0c;也可以是一个war类型的maven项目&#xff0c;取决于我们要不要整合jsp使用。但是不管是哪种项目类型&#xff0c;已经不是我们传统意义上的项目结构了 在本地使用SpringBoot的启动器即可访问我们开发的项目。如果我们将项目…

尝试 vue 实现 SEO

背景: 官网使用 VUE 写的, 且 使用 <component /> 动态创建组件, 通过 手动配置的组件, 动态生成页面内容 然后收到通知, 需要实现 SEO , 于是就开始了 VUE SEO 的拉锯战..... 第一种尝试 VUEphantomjs 首先说下原理 phantomjs 是可以部署在服务端的 无头浏览器,…

最强大脑记忆曲线(12)-- 录入数据修改

录入数据修改一、设计思路二、解决过程2.1 设计修改窗口2.2 转成py文件2.3 写业务逻辑1、先显示一下基础页面2、配合适配器&#xff0c;自动调整窗口大小3、在数据录入窗口或背记窗口双击某条记录3.1 增加信号3.2 在槽函数中打开修改页面**3.3 两个页面之间传递信号**3.4 在子窗…

24点问题(带输出构造方式)

问题描述&#xff1a; 在屏幕上输入1〜10范围内的4个整数&#xff08;可以有重复&#xff09;&#xff0c;对它们进行加、减、乘、除四则运算后&#xff08;可以任意的加括号限定计算的优先级&#xff09;&#xff0c;寻找计算结果等于24的表达式。 例如输入4个整数4、5、6、7…

1. RabbitMq 的基本概念

参考使用: 尚硅谷 消息中间件 RabbitMQ 课件 MQ 的概念 什么是 MQ MQ(message queue)&#xff0c;从字面意思上看&#xff0c;本质是个队列&#xff0c;FIFO 先入先出&#xff0c;只不过队列中存放的内容是 message 而已&#xff0c;还是一种跨进程的通信机制&#xff0c;用…

[附源码]计算机毕业设计毕业生就业管理系统

项目运行 环境配置&#xff1a; Jdk1.8 Tomcat7.0 Mysql HBuilderX&#xff08;Webstorm也行&#xff09; Eclispe&#xff08;IntelliJ IDEA,Eclispe,MyEclispe,Sts都支持&#xff09;。 项目技术&#xff1a; SSM mybatis Maven Vue 等等组成&#xff0c;B/S模式 M…

Minecraft 1.19.2 Forge模组开发 05.矿石生成

我们本次尝试在主世界生成模组中自定义的矿石 1.由于1.19的版本出现了深板岩层的矿石&#xff0c;我们要在BlockInit类中声明一个矿石的两种岩层形态&#xff1a; BlockInit.java package com.joy187.re8joymod.init;import com.joy187.re8joymod.Main; import net.minecraf…

微服务框架 SpringCloud微服务架构 10 使用Docker 10.8 数据卷挂载案例1

微服务框架 【SpringCloudRabbitMQDockerRedis搜索分布式&#xff0c;系统详解springcloud微服务技术栈课程|黑马程序员Java微服务】 SpringCloud微服务架构 文章目录微服务框架SpringCloud微服务架构10 使用Docker10.8 数据卷挂载案例110.8.1 挂载数据卷10.8.2 案例10.8.3 总…

Pr:导出设置之高级设置及 VR 视频

视频 VIDEO设置因所选导出格式而异。每种格式都有独特的要求&#xff0c;这些要求决定了哪些设置可用。以导出文件格式为 H.264 为例&#xff0c;下面给出有关高级设置 Advanced Settings以及 VR 视频 VR Video的选项及说明。高级设置 Advanced Settings关键帧距离Key Frame Di…

期末复习-软件体系结构

软件体系结构一、软件重用与构件技术软件重用的定义重用驱动的软件的开发过程构件的三种描述模型三种构件分类方法的组织方式&#xff0c;检索方式&#xff0c;刻面分类法二、软件体系结构概述软件体系结构 构件 连接件 约束软件体系结构的四个发展阶段三、软件体系结构风格…

塔望3W消费战略全案丨牛小范低脂即食肉蛋白 行走的米其林牛排

牛小范 客户&#xff1a;山东如康集团 品牌&#xff1a;牛小范 服务&#xff1a;3W消费战略 品牌全案 项目背景 山东如康集团是一家集牛羊肉生产、加工与销售等为一体的大型综合性集团企业&#xff0c;是山东省级“专精特新”企业、农业产业化市级龙头企业和山东省"十三…

Linux命令:scp

目录 简介 一、语法 二、示例 2.1 将本地文件复制到远程主机目录 2.2 将本地目录复制到远程主机目录 2.3 将远程主机的文件复制到本机 2.4 复制远程主机目录到本机 简介 今天我们来介绍一个Linux命令&#xff1a;scp scp — secure copy (remote file copy program)&am…

Vue实现手机端界面的购物车案例

目录 前期准备 Header Goods Footer Counter 今天用Vue实现的一个手机端的购物车案例&#xff0c;着重阐述组件化思想的优势&#xff0c;将页面的内容分成各个模块进行书写&#xff0c;然后数据传输&#xff0c;父传子、子传父、兄弟数据共享等&#xff0c;这方面知识不牢…

[附源码]计算机毕业设计springboot游戏商城平台论文

项目运行 环境配置&#xff1a; Jdk1.8 Tomcat7.0 Mysql HBuilderX&#xff08;Webstorm也行&#xff09; Eclispe&#xff08;IntelliJ IDEA,Eclispe,MyEclispe,Sts都支持&#xff09;。 项目技术&#xff1a; SSM mybatis Maven Vue 等等组成&#xff0c;B/S模式 M…

PHP 经纬度坐标相关计算方法

1. 前言 2. 计算经纬度坐标间的距离 3. 根据经纬度坐标距离排序 4. 经纬度范围查询 1. 前言 想要测试本文提供的几个功能函数&#xff0c;可以使用下面这个数据表结构及其数据 CREATE TABLE user ( id int(10) unsigned NOT NULL AUTO_INCREMENT COMMENT 用户id, name v…

html静态网站基于游戏网站设计与实现共计10个页面 (仿地下城与勇士游戏网页)

&#x1f389;精彩专栏推荐&#x1f447;&#x1f3fb;&#x1f447;&#x1f3fb;&#x1f447;&#x1f3fb; ✍️ 作者简介: 一个热爱把逻辑思维转变为代码的技术博主 &#x1f482; 作者主页: 【主页——&#x1f680;获取更多优质源码】 &#x1f393; web前端期末大作业…

UDS(83服务-AccessTimingParameter)

诊断协议那些事儿 诊断协议那些事儿专栏系列文章,本文介绍诊断和通讯管理功能单元下的83服务AccessTimingParameter,该服务的目的是读取/修改有效通信的计时参数。 文章目录 诊断协议那些事儿一、83服务-AccessTimingParameter二、请求格式子功能参数定义-timingParameterA…

Java并发编程—死锁

文章目录死锁什么叫做加锁&#xff1f;死锁代码理解&#xff1a;如何避免死锁&#xff1f;资源限制的挑战什么是资源限制&#xff1f;资源限制引发的问题&#xff1f;如何解决资源限制的问题&#xff1f;在资源限制情况下进行并发编程————————————————————…

物联网 (IoT) 为何如此重要?哪些技术让物联网成为了可能?

随着社会的进步和科技的发展&#xff0c;定位技术在技术手段、定位精度、可用性等方面均取得质的飞越&#xff0c;并且逐步从航海、航天、航空、测绘、军事、自然灾害预防等“高大上”的领域逐步渗透社会生活的方方面面&#xff0c;成为人们日常中不可或缺的重要应用——比如人…