《C++ Primer Plus》学习笔记3】的更多相关文章

简介 本笔记目前已包含<C++ Primer>中的绝大部分内容,但尚有部分小节有所缺漏,如 19.1.19.2 节的笔记尚未整理,会持续更新. 本项目中的学习笔记是在学完一章内容后,对其要点进行提炼后记下的笔记.笔记内容包含我学习时认为需要记忆的知识点.   笔记适用对象 看过一遍<C++ Primer>,可以查看本笔记对学习内容进行复习和梳理. 正在看<C++Primer>,自己没有精力或不想记笔记,可以每看完一章书籍,再看一遍笔记以梳理学习内容. 需要查阅<C…
记录自己学习C Primer Plus的学习笔记 第一章 C语言高效在于C语言通常是汇编语言才具有的微调控能力设计的一系列内部指令 C不是面向对象编程 编译器把源代码转化成中间代码,链接器把中间代码和其他代码合并,生成可执行文件 第二章 main函数总是第一个被调用的函数 include预处理器指令 声明,所有变量都必须先声明才能使用,最初的规则规则变量声明需在块的顶部 C语言通过赋值运算符而不是赋值语句来完成赋值操作,听起来很别扭,赋值语句其实就是赋值表达式+分号 第三章 由于现在16位机已经…
最近在学C++,在<C++ Primer>第五版的3.1节中说到使用using声明来使用命名空间中的成员,<C++ Primer>中这样写道: 有了using声明就无须专门的前缀(形如命名空间::)也能使用所需的名字了.using声明具有如下的形式: using namespace::name; 一旦声明了上述语句,就可以直接访问命名空间中的名字. 这样,形如书中所说 #include <iostream> using std::cin; using std::cout…
<C++Primer>(第五版)中,3.4.1的例题中使用一个名为text的字符串向量存放文本文件中的数据,输出text中的内容,刚开始我这样写: #include <iostream> #include <string> #include <vector> #include <iterator> using namespace std; int main(){ string text("name"); for (auto i…
<C++ Primer>(第五版)中计算vector对象中的索引这一小节中,举例要求计算各个分数段各有多少个成绩. 代码如下: #include <iostream> #include <string> #include <vector> using namespace std; int main(){ vector<unsigned> scores(, ); unsigned grade; while (cin >> grade){…
练习<C++ Primer>中的3.14节时,当敲入: #include <iostream> #include <string> using namespace std; int main(){ string word; vector<string> text; while (cin >> word) text.push_back(word); ; } 程序会报错: error: use of undeclared identifier 've…
第13章 拷贝控制 使用default:=defult只能修饰默认构造函数或拷贝控制成员,显式地要去编译器生成合成的版本. 使用delete:=delete通知编译器不希望定义这些成员,禁止试图使用它的操作,通常的用途是禁止拷贝控制成员,或引导函数匹配. 析构函数不能是delete的,如果删除了析构函数,我们只能动态分配这种类型,并且不能释放这些对象.(非动态类型会被系统自动释放) 定义行为像值的类:如果将一个对象赋予它自己,赋值运算符必须能正确工作(对象内含指针的时候):大多数赋值运算符组合了…
第8章 IO库 IO对象不能复制,即1.IO对象不能存储在vector或其他容器中   2.如果需要传递或返回IO对象,必须传递或返回指向该对象的指针或引用. 一般情况下,如果要传递IO对象以便对它进行读写,用非const引用的方式传递这个流对象.(因为要对IO对象进行读写) 条件状态:IO标准库管理一系列条件状态成员,用来标记给定的IO对象是否处于可用状态,或碰到了哪种特定的错误.流的状态由bad.fail.eof和good操作揭示:clear和setstate操作用于改变条件成员的状态. 输…
第2章  整型的赋值:当我们试着把一个超出其范围的值赋给一个指定类型的对象时,结果如何?答案取决于类型是signed还是unsigned的.对于unsigned,编译器会将该值对unsigned类型的可能取值数目求模然后取所得值:对于signed类型,未定义行为,很多处理器处理方式和unsigned类似. 字符串字面值的连接:std::cout << "multi-line" L"literal " << std::endl;结果未定义,即连…
1. C的左值用是指用于标志一个特定的数据对象的名字或表达式.“数据对象”是泛指数据存储的术语. 赋值运算符的左边应该是以个可以修改的左值. 右值是指可赋给可修gia的左值的量.右值可以是常量.变量或者任何可以产生一个值的表达式.. 2.对于下面的语句 butter =25.0 + 6.0*n/scale 运算顺序是先找到第一个*或/号,得到结果,再找第二个*或/号,然后才找第一个+或-号 3.一个顺序点(sequence point)是程序中执行的一点:在该点处,所有的副作用都在进入下一点之前…
1.汇编语言是特地的Cpu设计所采用的一组内部指令的助记符,不同的Cpu类型使用不同的Cpu C给予你更多的自由,也让你承担更多的风险 自由的代价是永远的警惕 2.目标代码文件.可执行文件和库 3.可以用画几个盒子的方式来跟踪一个程序的变量 一门语言的语法就是一套规则,用于管理这种语言中的合法语句组织到一起的方式.语句的语义就是它所表达出的意思. 关键字是C语言的词汇. 4.位(bit).字节(byte).字(word) 位只有0和1两种可能,计算机的最小存储单位 几乎所有的计算机一个字节(by…
第四章: 重要知识点: 4.1 基础 函数调用是一种特殊的运算符,它对运算对象的数量没有限制. 重载运算符时可以定义运算对象的类型,返回值类型,但运算对象的个数,运算符的优先级,结合律无法改变. 当一个对象被用作左值时,使用的是对象在内存中的位置,当用作右值时,使用的是对象的值.左值有时可以当做右值使用,但右值不能当做左值使用. decltype()函数中,如果表达式的求值结果是左值,则函数得到一个引用类型. 以下由于求值顺序问题造成的结果未定义错误: int i = 0; cout << i…
第一章: 重要知识点: 类型:一种类型不仅定义了数据元素的内容,还定义了这类数据上可以进行的运算:所以说类定义,实际上就是定义了一种数据类型: >>和<<运算符返回其左侧的运算对象: std::cin >> v1 >> v2; 和以下代码执行结果一样: std:cin >> v1; std:cin >> v2; 良好的行注释风格: 注释内的每一行都以一个星号开头,从而指出整个范围都是多行注释的一部分: #include<iost…
建立结构声明 结构声明(structure declaration)描述了一个结构的组织布局 struct book { char title[MAXTITL]; char author[MAXAUTL]; float value; }; 该声明描述了一个由两个字符数组和一个 float 类型变量组成的结构.该声明并未创建实际的数据对象,只描述了该对象由什么组成 关键字 struct,它表明跟在其后的是一个结构,后面是一个可选的标记(该例中是 book),程序中可以使用该标记引用该结构 在结构声…
存储类别 从硬件方面来看,被储存的每个值都占用一定的物理内存,C 语言把这样的一块内存称为对象(object) 对象可以储存一个或多个值.一个对象可能并未储存实际的值,但是它在储存适当的值时一定具有相应的大小 int entity = 3; 该声明创建了一个名为 entity 的标识符(identifier).标识符是一个名称,在这种情况下,标识符可以用来指定(designate)特定对象的内容 标识符 entity 即是软件(即 C 程序)指定硬件内存中的对象的方式.该声明还提供了储存在对象中…
getchar() 和 putchar() getchar() 函数不带任何参数,它从输入队列中返回下一个字符 下面的语句读取下一个字符输入,并把该字符的值赋给变量 ch ch =getchar(); 相当于 scanf("%c", &ch); putchar() 函数打印它的参数 下面的语句把之前赋给 ch 的值作为字符打印出来 putchar(ch); 相当于 printf("%c", ch); getchar() 和 putchar() 不需要转换说明…
数组 数组由数据类型相同的同一系列元素组成 需要使用数组时,通过声明数组告诉编译器数组中内含多少元素和这些元素的类型 普通变量可以使用的类型,数组元素都可以用 float candy[365]; // 内含 365 个 float 类型元素的数组 char code[12]; // 内含 12 个 char 类型元素的数组 int states[50]; // 内含 50 个 int 类型元素的数组 方括号([])表明 candy.code 和 states 都是数组,方括号中的数字表明数组中的…
函数简介 函数(function)是完成特定任务的独立程序代码单元 使用函数可以省去编写重复代码的苦差,函数能让程序更加模块化,提高程序代码的可读性,更方便后期修改.完善 #include <stdio.h> void test(void); // 函数原型 int main(void) { printf("Before run function\n"); test(); // 调用函数 printf("After run function\n"); r…
单字符 I/O:getchar() 和 putchar() getchar() 和 putchar() 每次只处理一个字符 getchar() 和 putchar() 都不是真正的函数,它们被定义为供预处理器使用的宏 getchar() 不带任何参数,它从输入队列中返回下一个字符 例如,下面的语句读取下一个字符输入,并把该字符的值赋给变量 ch ch = getchar(); 等同于 scanf("%c", &ch); putchar() 打印它的参数 例如,下面的语句把之前赋…
if 语句: if 语句被称为分支语句(branching statement)或选择语句(selection statement) if 语句的通用形式: if (expression) statement 如果 expression 为真,则执行 statement:否则,跳过 statement 与 while 循环一样,statement 可以是一条简单的语句也可以是复合语句 if 语句 和 while语句的区别:如果满足条件可执行的话,if 语句只能测试和执行一次,而 while 语句…
伪代码的概念: 伪代码是一种用简单的句子表示程序思路的方法,它与计算机语言的形式相对应.伪代码有助于设计程序的逻辑.确定程序的逻辑无误之后,再把伪代码翻译成实际的编程代码.使用伪代码的好处之一是,可以把注意力集中在程序的组织和逻辑上,不用在设计程序时还要分心如何用编程语言来表达自己的想法 while语句 while 循环的通用形式: while (expression) statement statement 部分可以是以分号结尾的简单语句,也可以是用花括号括起来的复合语句 expression…
基本运算符 赋值运算符:= 在C语言中,=不是“相等”,而是赋值运算符,把左边的值赋给右边的变量 a = 2018; //把值2018赋给变量a 赋值表达式语句的目的是把值储存到内存位置上,用于储存值的数据存储区域统称为数据对象 加法运算符:+ 将其左侧的值与右侧的值相加 减号运算符:- 将其左侧的值减去右侧的值 符号运算符:-和+ -作为一元运算符,改变其右侧值的符号,一元运算符只需要一个运算对象 +作为一元运算符,不会改变运算对象的值或符号 除法运算符:/ /左侧的值是被除数,/右侧的值是除…
从一个简单的例子开始 #include <stdio.h> int main() { char name[10]; printf("Input Your Name:\n"); scanf("%s", name); printf("Your Name is %s\n", name); return 0; } 运行结果 C语言没有专门用于储存字符串的变量类型,字符串都被储存在char类型的数组中 数组由连续的存储单位组成,字符串中的字符被…
从一个简单的程序开始 #include <stdio.h> int main(void) { float weight; float value; printf("Please enter your book's weight:"); scanf("%f", &weight); //用户输入 value = 17 * weight * 14.5833; printf("Your book's weight is %f and value…
从一个简单的C语言程序开始 #include <stdio.h> /*这是一个简单的C语言程序*/ //注释 int main(void) { int num; num = 1; printf("This is a c program!\n"); printf("Number is %d\n", num); return 0; } #include <stdio.h>,把stdio.h包含到当前程序,stdio.h是C编译器软件包的标准部分,…
1 c++内联函数 编译器将使用相应的函数代码替换函数调用,对于内联代码,函数无需跳到另一个位置执行代码再跳回来,所以内联函数运行速度比常规函数快. 但是代价是需要更多的内存. 使用场合: 执行函数代码的时间比处理函数调用机制的时间长,在我看来就是代码量比较少的方法而且多次使用的情况. 使用方法: 函数声明前加上关键字inline 函数定义钱加上关键字inline 宏与内联函数区别: https://blog.csdn.net/chenguolinblog/article/details/271…
随笔: 1)C语言中%3d%2d什么意思? 格式化规定字符, 以"%"开始, 后跟一个或几个规定字符,用来确定输出内容格式.在"%"和字母之间插进数字表示最大场宽. 例如:%8s表示输出8个字符的字符串, 不够8个字符右对齐. 2)for 循环加大括号和不加大括号的区别 for语句大{}后,写在{}中的语句都会执行.如果不写{}只会执行for语句后面的带分号的语句. for(int i = 0; i < 3; i++)        System.out.pr…
本片博客为实验楼的训练营课程深入学习<C++ Primer第五版>的实验报告和学习笔记. 原课程地址为:https://www.shiyanlou.com/courses/405# 原文出处:http://www.cnblogs.com/jacklu/p/4793049.html 程序设计思路 实验结果: 源代码: header.h #pragma once #include <iostream> #include <string> #include <vecto…
C++Primer第5版学习笔记(四) 第六章的重难点内容         你可以点击这里回顾第四/五章的内容       第六章是和函数有关的知识,函数就是命名了的代码块,可以处理不同的情况,本章内容包括:         1.函数的概念基础,包括函数的定义声明以及函数如何生成值和返回结果.       2.函数重载,重载可以使函数接受不同种类或者数量不同的参数.       3.函数指针,指向函数的一类特殊指针.         下面是这一章的知识点:              知识点1:P…
C++Primer第5版学习笔记(三) 第四/五章的重难点内容           你可以点击这里回顾第三章内容       因为第五章的内容比较少,因此和第四章的笔记内容合并.       第四章是和表达式有关的知识,表达式是C++的基础设施,本章由三部分组成:         1.表达式概念基础,包括表达式的基本概念,左值和右值的概念,优先级结合律,求值顺序.       2.各种运算符,主要包括算数\关系\逻辑\赋值\递增递减\成员访问\条件\位运算\sizeof\逗号运算符 这10种运算…