C++ Primer Plus 6 笔记(2)】的更多相关文章

bool b = 42; // _b is true_ int i = b; // _i has value 1_ i = 3.14; // _i has value 3_ double pi = i; // _pi has value 3.0_ unsigned char c = -1; // _assuming 8-bit chars_, _c has value 255_ signed char c2 = 256; // _assuming 8-bit chars_, _the value…
写在前面: 算法和数据结构是计算机学习的基础,而大部分书籍是用C/C++编写.所以有了把C语言重新学一遍的想法.这个系列主要是记录看C primer plus的一些笔记和部分课后习题的答案,不会总结的很系统,只是一些自己的思考.加油!!! 这一章没有讲有关C语言的知识,主要讲了C语言的起源,C语言的特性,C语言在行业里的发展等. 其中,1.4节,1.5节,1.6节,1.7节对于计算机小白要反复研读. to be continued...…
读<C++ Primer>才知道,自己对C++知之甚少... 写个博客记录下自己C++的成长,只是读书笔记,不是对<C++ Primer>知识点的总结,而是对自己在书上看到的以前不懂或不清楚的C++知识的一个记录,也希望和一起初读<C++ Primer>的朋友们一起成长. 新手笔记,大牛请无视. 1.cin和cout分别是istream和ostream的一个对象,定义在std中,另外,cin和cout是有返回值的返回值是这个istream或ostream对象(应该是引用…
简介 本笔记目前已包含<C++ Primer>中的绝大部分内容,但尚有部分小节有所缺漏,如 19.1.19.2 节的笔记尚未整理,会持续更新. 本项目中的学习笔记是在学完一章内容后,对其要点进行提炼后记下的笔记.笔记内容包含我学习时认为需要记忆的知识点.   笔记适用对象 看过一遍<C++ Primer>,可以查看本笔记对学习内容进行复习和梳理. 正在看<C++Primer>,自己没有精力或不想记笔记,可以每看完一章书籍,再看一遍笔记以梳理学习内容. 需要查阅<C…
记录自己学习C Primer Plus的学习笔记 第一章 C语言高效在于C语言通常是汇编语言才具有的微调控能力设计的一系列内部指令 C不是面向对象编程 编译器把源代码转化成中间代码,链接器把中间代码和其他代码合并,生成可执行文件 第二章 main函数总是第一个被调用的函数 include预处理器指令 声明,所有变量都必须先声明才能使用,最初的规则规则变量声明需在块的顶部 C语言通过赋值运算符而不是赋值语句来完成赋值操作,听起来很别扭,赋值语句其实就是赋值表达式+分号 第三章 由于现在16位机已经…
C++Primer2.3节介绍了两种复合类型:引用和指针 1.引用 引用并非对象,它只是为一个已经存在的对象所起的别名. 一旦初始化完成,引用将和它的初始值对象一直绑定在一起,不能重新绑定到另一个对象,因此引用必须初始化. 定义引用时,程序把引用和它的初始值绑定到一起,而不是将初始值拷贝给引用. 引用本身不是一个对象,所以不能定义引用的引用 引用只能绑定在对象上,而不能与字面值或者某个表达式的结果绑定在一起. 引用的类型必须和与之绑定的对象的类型严格匹配.但是有两种例外情况: 1.初始化常量引用…
声明: 文中内容收集整理自<C++ Primer 中文版 (第5版)>,版权归原书所有. 学习一门程序设计语言最好的方法就是练习编程. 1.8比特的char类型计算机表示的实际范围是-128-127. 2.赋值给无符号类型unsigned 时,如果超出它的显示范围,则结果是初始值对无符号类型表示数值总数取模后的余数. 如:unsigned char c = -1,则char占8比特,c的值是255. 赋值给带符号类型signed时,如果超出它的范围,结果是未定义的.此时可能继续工作.崩溃或者产…
声明: 文中内容收集整理自<C++ Primer 中文版 (第5版)>,版权归原书所有. 学习一门程序设计语言最好的方法就是练习编程. 1.一个函数的定义包含四个部分:返回类型(return type).函数名(function name).一个括号包围的形参列表(parameter list,允许为空)以及函数体(function body). 2.cin.cout的使用 #include<iostream> int main() { std::cout << &qu…
最近在学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. 2.类别别名: (1)   #define FLOAT_POINTER float * FLOAT_POINTER pa, pb; 预处理器置换将该声明转换成  float * pa, pb: // pa 是指针,pb就是一个float (2)  typedef char byte 不会出现上述问题是最佳的选择 3.  cin.get(name, arSize).get() // 输入长度为arSize的name接受换行 // 发送给cin的输入被缓冲.这意味着只…
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…
这一章主要介绍C语言的结构和其他数据形式,是学习算法和数据结构的重点. 1.示例代码 /*book.c -- 仅包含一本书的图书目录*/ #include <stdio.h> #define MAXTITL 41 #define MAXAUTL 31 struct book { /* data */ char title[MAXTITL]; char author[MAXAUTL]; float value; }; int main(void) { struct book library; /…
C的强大功能之一在于它允许我们控制程序的细节.C的内存管理系统正是这种控制能力的例子.它通过让我们决定哪些函数知道哪些变量以及一个变量在程序中存在多长时间来实现这些控制. 1.存储类及其说明符 主要的定义:作用域.链接以及存储时间.其他编程语言也有类似的概念.C语言通过这三个概念定义了5中存储类.其说明符分别为auto.register.static.extern和typedef. 2.存储类和函数 函数也分为外部的和静态的.关键字是extern和static.默认情况下是外部的. 3.mall…
本章标题是字符串和字符串函数.主要是了解和字符串有关的函数. 1.字符串表示和字符串I/O 主要内容:字符串常量和字符串数组的初始化,对比了指针和字符串. 其中要注意的是,数组初始化是从静态存储区把一个字符串复制给数组,而指针初始化只是复制字符串的地址.但是绝大多数的C字符串操作使用的都是指针. 2.字符串的函数 无论怎么样,先分配足够的空间.介绍了三种输入函数gets().fgets().scanf()和三种输出函数puts().fputs().printf(),以及strlen().strc…
这一章的标题是数组和指针.指针是C语言的精髓所在,而数组的概念和指针又息息相关,所以放在一起讲. 1.数组 主要内容有:1.1.数组初始化.1.2.指定初始化.1.3.数组赋值.1.4.数组边界.1.5.指定数组大小. 其中要注意的是,1.2中的C99新增的特性,可以指定某些元素进行初始化. int arr[6] = {[5]=212}; 在该代码中,数组的最后一个元素初始化为212,其他为0. 而1.3中要注意的是,C不支持把数组作为一个整体来赋值,这和Java.python都不一样,也不支持…
本章的标题是函数.C的设计原则是把函数作为程序的构成模块. 1.函数概述 函数的定义:函数是用于完成特定任务的程序代码的自包含单元. 使用函数的原因:1.函数的使用可以省去重复代码的编写.2.使得程序模块化,更有利于阅读.修改和完善.以这种方式看待函数有利于把精力投入到程序整体设计而不是实现其细节. 函数同变量一样有多种类型.任何程序在使用函数之前都需要声明该函数类型. 函数参数.函数类型没啥说的,其他语言都会讲到. PS:函数的结尾最好只使用一次return,这样更有利于阅读程序的人明白函数的…
本章的标题是字符输入/输出和输入确认.主要内容是讨论用于I/O的标准函数. 1.getchar()和putchar() 这两个函数之前用过,我们通过这两个函数来讨论下缓冲区. #include "stdio.h" int main (void) { char ch; while ((ch = getchar()) != '#') putchar(ch); ; } 当你所输入的文本能立刻回显时,这是非缓冲或者直接输入的一个实例,它表示你所输入的字符对正在等待的程序立刻变为可用.相反,延迟…
这两章的标题是C控制语句:循环以及C控制语句:分支和跳转.之所以一起讲,是因为这两章内容都是讲控制语句. 第六章的第一段示例代码 /* summing.c --对用户输入的整数求和 */ #include <stdio.h> int main (void) { long num; long sum = 0L; int status; printf("Please enter an integer to be summed. "); printf("q to qui…
本章的标题是运算符,表达式和语句.主要研究如何处理数据. 示例代码展示了一个使用简单的while循环的代码,难度不大. 下面简单介绍本章的基本概念. 1.基本运算符. 基本运算符有:赋值运算符(C语言可以多重赋值,例如cheeta = tarzan = 68),加法运算,减法运算符,符号运算符(也称为一元运算符),乘法运算符,除法运算符(整数除法结果的小数部分会丢弃,而整数除浮点数的时候,编译器是先将整数转换为浮点数) 2.其他运算符 有sizeof,size_t,%(注意负数的情况),++,-…
本章的标题是字符串的格式化输入/输出,重点介绍输入和输出. 本章的第一段示例代码和上一张示例代码很相近,代码就不贴了,新出现的特性是使用了一个数组来存放字符串,C预处理命令和strlen()函数. 下面具体介绍这些概念. 1.字符串 C语言没有为字符串定义专门的变量类型,而是存储在char数组中. 注意: 1.scanf()读取字符串时,会在遇到第一个空白字符串,制表符或者换行符处停止读取.所以使用%s的scanf()只会读取一个单词而非整个句子(C语言一般用gets()来处理一般的字符串).…
本章的标题是数据和C,主要内容是介绍数据类型中的整数类型和浮点数类型. 本章的第一段代码 #include <stdio.h> int main(void) { float weight; /*用户的体重*/ float value; /*相等重量的铑的价值*/ printf ("Are you worth your weight in rhodium?\n"); printf ("Let's check it out.\n"); printf (&qu…
这章的标题是C语言概述,内容大概是介绍一些简单的示例程序,来了解和熟悉C语言的一些基本特征. 这是书里的第一段代码,敲敲找找感觉.推荐在linux环境下写代码. PS:倒腾sublime text一下午,想装个sublimeClang插件,结果直接把sublime text整崩了,怒换atom,用着还不错. #include <stdio.h> int main(void) /*一个简单的C程序*/ { int num; /*定义为一个名为num的变量*/ num = 1; /*赋值*/ pr…
目标代码文件.可执行文件和库 C编程的基本策略是使用程序将源代码文件转换为可执行文件,此文件包含可以运行的机器语言代码.C分两步完成这一工作:编译和链接.编译器将源代码转换为中间代码,链接器将此中间代码与其他代码相结合来生成可执行文件.C使用被划分为两部分的这一方法使程序便于模块化.我们可以分别编译各个模块,然后使用链接器将编译过的模块结合起来.这样,如果需要改变一个模块,则不必重新编译所有其他模块.同时,链接器将自己的程序与预编译的库代码结合起来. 中间文件的形式有多种选择.最一般的选这,同时…