C++ Primer Plus》学习笔记1

第二章、開始学习C++

1、控制符endl

假设显示字符串时,在字符串中包括换行符,而不是在末尾加上endl,这样能够大大降低输入量;假设是要生成一个空行,我们觉得endl比較方便。

2、在C和C++中,不能把空格、制表符、回车放在元素中间,也不能把回车符放入字符串中间;可是能够把空格放入字符串中间。

3、为什么int main()主函数中须要一个返回值0呢?由于能够将计算机的炒作系统看作调用程序,main()返回值并非返回程序的其它部分,而是返回给操作系统。

4、C++语句包括声明语句、赋值语句、消息语句、函数调用、函数原型、返回语句。

================================================================================

第三章、处理数据

1、变量名命名规则

在名称中仅仅能使用字母字符、数字、下划线(_);名称的第一个字符不能是数字;区分大写和小写字符;不能将C++keyword作为名称;变量命名方案和函数命名方案是一样的,有时候通常在名字的前面加上一个简单的字母前缀来描写叙述变量的类型,比如str或sz表示以空字符结束的字符串、b表示布尔值、p表示指针、和c表示单个字符。

2、有时候能够使用无符号类型来增大变量能够储存的最大值。unsigned,假设是整型也能够直接写成unsigned int 等价于 unsigned

3、C++怎样确定常量的类型呢?

假设没有特别的说明,我们都默觉得整型常量储存为int类型,有时候会带后缀区分开来整数后面的l和L后缀表示该整数为long常量,u和U后缀表示为unsigned int 常量,ul表示unsigned long,小写大写都能够。

4、C++中对字符用单引號,对字符串用双引號

5、强制类型转换

(typeName)value 来自于C语言

typeName (value) 这个是来自于C++,新格式的想法是要让强制类型转换就像是函数调用

===============================================================================

第四章、复合类型

1、数组

typeName arrayName[arraySize]注意arraySize能够是整型常数或者const的值,也能够是常量表达式,可是不能是变量哦。

2、数组初始化原则

1)仅仅有定义数组时才干使用初始化,hand[4] = {5, 6, 7, 9}; fals

2)不能将一个数组赋给另外一个数组 hand = cards; false

3)假设仅仅对数组一部分初始化,则编译器将把其它元素设置为0

4)将数组全部元素初始化为0非常easy,仅仅须要将第一个元素初始化为0;比如long totals[500] = {0};注意:假设要将全部元素初始化为1呢?我们不能初始化为{1},否则就仅仅有第一个元素为1,其它为0了。

3、区分下字符串的双引號和字符的单引號

char shirt_size = 'S';

char shirt_size = "S";

4、几种输入的方法:(重点)

1)字符串的输入:cin cin使用空白(空格、制表符、换行符)来定字符串的界。

2)每次读取一行的字符串的输入:

面向行输入:getline()通过回车键输入的换行符来确定输入结尾,要调用这样的方法。

要调用这样的方法,使用cin.getline(name, N),注意这个函数最多能读取N-1个字符。

面向行输入: get() cin.getline(name,N)

注意:连续两次调用get()

cin.get(name,ArSize);

cin.get(dessert, Arsize);

这个是不正确的,由于第一次调用后,换行符将留在输入队列中,因此第二次调用时看到的第一个字符时换行符,假设不借助帮助,get()不能跨过该换行符。

正常处理方法:

cin.get(name, N);

cin.get();

cin.get(name1, N);

总之,getline()使用起来简单些,可是get()使用检查错误更简单些。

5、C++程序常使用指针而不是数组来处理字符串

strcpy(charr1, charr2)复制

strcpy(charr1, charr2)附加在字符串的末尾

6、两种确定字符串字符数的方法

int len1 = str1.size(); int len2 = strlen(charr1);

7、结构

struct inflatable

{

char name[20];

float volume;

double price;

}; inflatble标签成为了新类型的名称

8、共用体是一种数据格式,它可以储存不同的数据类型,可是仅仅能同一时候存储当中的一种类型。也就说,结构可以同一时候存储int、long和double,共用体仅仅能存储int、long或double

9、枚举

enum spectrum{red, orange, yellow, green, blue, violet, indigo, ultraviolet}

首先让spectrum变成新类型的名称,枚举

将括号中面的变成了符号常量,相应整数值0~n,这些常量叫做枚举量

10、声明初始化指针

int *ptr 传统上这么写

int* ptr 如今这么写

新的写法要注意,对于每一个指针变量名,都须要使用一个*

int* p1,p2;创建一个指针p1和一个常规int变量p2

11、new的使用方法

1)在C++创建指针时,计算机将分配用来存储地址的内存,但不会分配来存储指针所指向的数据的内存。C语言中,能够使用库函数malloc()分配内存;在C++中仍然能够这样做,但还有更好的方法——new操作符。

int* ps = new int;

……

delete ps;//释放内存,但不会删除指针ps本身,所以我们要配对使用这个,否则会出现内存泄露。2)使用new创建动态数组

int* psome = new int [10];// new返回第一个元素的地址

delete [] psome; //注意要加上方括号,释放一个数组

3)使用new和delete须要注意的规则

①不要使用delete来释放不是new分配的内存;

②不要使用delete来释放通一个内存块两次;

③假设使用new[]为数组分配内存,则使用delete[]来释放;

12、指针变量添加1后,其添加的值等于指向的类型占用的字节数,也就是说假设pw指向double类型,因此对pw添加1时,其值添加8个字节,假设是short,其值添加2个字节.

13、在cout和多数的C++表达式中,char数组名指向char的指针以及用引號括起来的字符串常量都被解释为字符串第一个字符的地址。

14、要获得字符串的副本,比如我们如今须要将animal赋给ps

1)分配空间 ps = new char[strlen(animal) + 1];

2)复制 strcpy(ps, animal);

strncpy与strcpy差别在于接收第三个參数,要复制的最大字符数。

15、使用new创建动态结构

inflatable *ps = new inflatable;

什么时候使用句点操作符,什么时候使用箭头操作符?

规则很easy,假设结构标识符是结构名,则使用句点操作符,假设是指向结构的指针,那么应该是用箭头操作符。ps为指向结构的指针,所以ps->name;
ps就是被指向的值,结构本身,

(ps).volume

==============================================================================

完结于 2014.7.15 0:40


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

  1. 《C++ primer》学习笔记整理

    简介 本笔记目前已包含<C++ Primer>中的绝大部分内容,但尚有部分小节有所缺漏,如 19.1.19.2 节的笔记尚未整理,会持续更新. 本项目中的学习笔记是在学完一章内容后,对其要 ...

  2. C Primer Plus 学习笔记 -- 前六章

    记录自己学习C Primer Plus的学习笔记 第一章 C语言高效在于C语言通常是汇编语言才具有的微调控能力设计的一系列内部指令 C不是面向对象编程 编译器把源代码转化成中间代码,链接器把中间代码和 ...

  3. 《C++ Primer》学习笔记 :命名空间的using声明

    最近在学C++,在<C++ Primer>第五版的3.1节中说到使用using声明来使用命名空间中的成员,<C++ Primer>中这样写道: 有了using声明就无须专门的前 ...

  4. 《C++ Primer》学习笔记:迭代器介绍

    <C++Primer>(第五版)中,3.4.1的例题中使用一个名为text的字符串向量存放文本文件中的数据,输出text中的内容,刚开始我这样写: #include <iostrea ...

  5. 《C++ Primer》学习笔记:3.3.3其他vector操作

    <C++ Primer>(第五版)中计算vector对象中的索引这一小节中,举例要求计算各个分数段各有多少个成绩. 代码如下: #include <iostream> #inc ...

  6. 《C++ Primer》学习笔记:向vector对象添加元素蕴含的编程假定

    练习<C++ Primer>中的3.14节时,当敲入: #include <iostream> #include <string> using namespace ...

  7. 《C++ Primer》学习笔记【第三部分 类设计者的工具】

    第13章 拷贝控制 使用default:=defult只能修饰默认构造函数或拷贝控制成员,显式地要去编译器生成合成的版本. 使用delete:=delete通知编译器不希望定义这些成员,禁止试图使用它 ...

  8. 《C++ Primer》学习笔记【第二部分 C++标准库】

    第8章 IO库 IO对象不能复制,即1.IO对象不能存储在vector或其他容器中   2.如果需要传递或返回IO对象,必须传递或返回指向该对象的指针或引用. 一般情况下,如果要传递IO对象以便对它进 ...

  9. 《C++ Primer》学习笔记【第一部分 C++基础】

    第2章  整型的赋值:当我们试着把一个超出其范围的值赋给一个指定类型的对象时,结果如何?答案取决于类型是signed还是unsigned的.对于unsigned,编译器会将该值对unsigned类型的 ...

  10. C Primer Plus学习笔记(二)

    1. C的左值用是指用于标志一个特定的数据对象的名字或表达式.“数据对象”是泛指数据存储的术语. 赋值运算符的左边应该是以个可以修改的左值. 右值是指可赋给可修gia的左值的量.右值可以是常量.变量或 ...

随机推荐

  1. mysql支持emoji解决办法

    mysql显示不了emoji表情或者显示??,原因这里不解释,直接说解决办法.(主要就是修改utf8mb4) 1.修改表 ALTER TABLE `TABLE_NAME` CHARACTER SET ...

  2. YII2 实现登录时候修改最新登录时间

    YII2 实现登录时候修改最新登录时间 YII2保存最新登录时间主要技巧:为 EVENT_AFTER_LOGIN 事件绑定一个方法,在方法中保存最新时间 public function login() ...

  3. 使用wget -i下载多个文件

    使用wget -i下载多个文件 命令: wget -i filelist.txt 说明: 首先,保存一份下载链接文件 cat > filelist.txt url1 url2 url3 url4

  4. PHP 判断数据类型

    isset()://变量是否已经声明 empty()://变量是否为空 defined()://常量是否已经定义 define() array_key_exists(mixed key, array ...

  5. Python之路Day13

    day13主要内容:JavaScript.DOM.jQuery 武Sir blog:http://www.cnblogs.com/wupeiqi/articles/5369773.html JavaS ...

  6. Basic REST API Design

  7. JS常用方法函数(1)

    1.字符串长度截取 function cutstr(str, len) { var temp, icount = 0, patrn = /[^\x00-\xff]/, strre = "&q ...

  8. JS 随记

    一.在内联框架中,刷新整个框架,在.net中使用此方法( ScriptManager.RegisterStartupScript(this.Page, this.GetType(), "re ...

  9. 转: requirejs中文api (详细)

    RequireJS的目标是鼓励代码的模块化,它使用了不同于传统<script>标签的脚本加载步骤.可以用它来加速.优化代码,但其主要目的还是为了代码的模块化.它鼓励在使用脚本时以modul ...

  10. 谷歌浏览器javascript调试教程

    扫扫关注"茶爸爸"微信公众号 坚持最初的执着,从不曾有半点懈怠,为优秀而努力,为证明自己而活. 回复:"茶爸爸"       看看有什么!! 怎样打开Chrom ...