ImageVerifierCode 换一换
格式:DOCX , 页数:15 ,大小:24.64KB ,
资源ID:8217136      下载积分:3 金币
快捷下载
登录下载
邮箱/手机:
温馨提示:
快捷下载时,用户名和密码都是您填写的邮箱或者手机号,方便查询和重复下载(系统自动生成)。 如填写123,账号就是123,密码也是123。
特别说明:
请自助下载,系统不会自动发送文件的哦; 如果您已付费,想二次下载,请登录后访问:我的下载记录
支付方式: 支付宝    微信支付   
验证码:   换一换

加入VIP,免费下载
 

温馨提示:由于个人手机设置不同,如果发现不能下载,请复制以下地址【https://www.bdocx.com/down/8217136.html】到电脑端继续下载(重复下载不扣费)。

已注册用户请登录:
账号:
密码:
验证码:   换一换
  忘记密码?
三方登录: 微信登录   QQ登录  

下载须知

1: 本站所有资源如无特殊说明,都需要本地电脑安装OFFICE2007和PDF阅读器。
2: 试题试卷类文档,如果标题没有明确说明有答案则都视为没有答案,请知晓。
3: 文件的所有权益归上传用户所有。
4. 未经权益所有人同意不得将文件中的内容挪作商业或盈利用途。
5. 本站仅提供交流平台,并不能对任何下载内容负责。
6. 下载文件中如有侵权或不适当内容,请与我们联系,我们立即纠正。
7. 本站不保证下载资源的准确性、安全性和完整性, 同时也不承担用户因使用这些下载资源对自己和他人造成任何形式的伤害或损失。

版权提示 | 免责声明

本文(C++ Primer学习笔记.docx)为本站会员(b****6)主动上传,冰豆网仅提供信息存储空间,仅对用户上传内容的表现方式做保护处理,对上载内容本身不做任何修改或编辑。 若此文所含内容侵犯了您的版权或隐私,请立即通知冰豆网(发送邮件至service@bdocx.com或直接QQ联系客服),我们立即给予删除!

C++ Primer学习笔记.docx

1、C+ Primer学习笔记前言:持之以恒地把这本书看完。 -2014.5.5-周一-第2章 变量 和基本类型2.1 基本的内置类型C+定义了一套包含算术类型(arithmetic type)和空类型(void)在内的基本类型。2.1.2 类型转换含有无符号类型的的表达式 unsigned u= 10; int i = -42; std:couti+istd:endl; /输出 -84 std:coutu+istd:endl; /输出4294967264 cout(unsigned)iendl; /输出4294967254说明:u+i表达式中,想加前首先把整数-42转换成无符号数。提示:如果表达

2、式里面既有无符号类型又有带符号类型,当带符号类型取值为负,出现异常结果。2.1.3字面值常量整数和浮点型字面值常量20-十进制024-八进制0x14-十六进制-2014年5月9号 -星期五字符和字符串字面值 a/字符字面值“Hellow World”/字符串字面值编译器在每个字符串的结尾都加上空字符“n”转义序列 两类字符不能直接使用:一类是不可打印的字符。(退格等)另一类是在C+中有特殊含义的字符(单引号,双引号,问号,反斜线) 指定字面值类型 P37 布尔值面值和指针字面值True 和false为布尔字面值 nullptr为指针字面值2.2 变量变量定义形式:类型说明+ 变量名对象:一块能

3、存储数据并具有某种类型的存储空间。注意:初始化不是赋值,初始化的含义是创建变量时赋予其一个初始值,而赋值是把当前对象的值清除,用一个新的值代替。列表初始 int i3; int j(4);2.2.2. 变量的声明的定义如果声明一个变量而非定义一个变量,就在变量的前面添加一个由extern的关键字。extern int i; /声明i而没有定义i int j; /声明并定义j如果给i赋予初始值了,i也就抵消了extern 的作用。静态类型(statically typed):C+是一种静态类型的语言。其含义就是在编译阶段检查类型。2.2.3 标示符(字母,数字,下划线)C+关键字(73)-P43

4、页C+操作符替代名(11)-P43页2.2.4 名字的作用域(scope)嵌套的作用域-彼此包含,被包含的叫内层作用域,包含的叫外层作用域2.3 复合类型2.3.1 引用(reference)-为对象提个别名 int val = 1024; int &ref = val; /ref为val的引用 int &ref; /错误引用必须被初始化说明:引用并非对象,相反的,它只是一个已经存在对象所起的另外一个别名。因为引用不是一个对象,不能定义引用的引用。引用的定义 -引用的类型要与绑定的对象严格匹配。2.3.2 指针说明:指针本身就是一个对象,允许对指针赋值和拷贝。获取对象的地址-取地址运算符(&)

5、引用不是对象,没有实际地址,所以不能定义指向引用的指针。利用指针访问对象-解引用(*)空指针-不指向任何一个对象说明: 可以把0直接赋值给一个指针变量,但是不能把一个变量值为0的值赋给指针变量。 int zero = 0; int *p = zero; /错误赋值和指针Void* 指针 -是一种特殊的指针类型,可以用于存放任意对象的地址。2.3.3 理解复合类型的声明定义多个变量 int i=1024,*p = &i,&r = i;指向指针的指针 int ival = 1024; int *pi = &ival;/pi 指向一个int型的数 int *ppi = π / ppi指向一个i

6、nt型的指针指向指针的引用引用本身不是一个对象,不能定义指向引用的指针;但是可以定义指向指针的引用。 int i = 42; int *p ; int *&r = p; /r为一个对指针p的引用 r = &i;/r赋值为i的地址,也就是另p指向i *r = 0; / 解引用r得到i的值2.4 const 限定符初始化和constint i = 42;const int ci = i;/ci的常量特征在执行改变ci的操作时才会发生作用。int j = ci ;/file.cc定义并初始化一个常量,改文件能被其他文件访问 extern const int bufsize = fun();/file

7、_1.h文件 extern const int bufsize ;如果想在多个文件之间共享const对象,必须在变量定义之前添加entern关键字。2.4.1 const 的引用-常量的引用const int ci = 1024;const int &r1 = ci;r1 = 42 ; / 错误,r1 为常量 int &r2 = ci; /错误,ci为 常量,试图用一个非常量引用指向一个常量引用初始化和对const的引用 引用的类型必须和其所引用的类型一致。但是有两个例外。?int i = 42;const int &r1 = i; /允许将const int& 绑定到一个普通 int 对象上

8、 const int &r2 = 42; / r2 是一个常量的引用 const int &r3 = r1*2; / r3是一个常量的引用 int &r4 = r1*2; /错误,r4 是一个普通非常量的引用说明:允许为一个常量引用绑定非常量的对象,字面值,或者表达式。 double dval = 3.14; const int &ri = dval; coutriendl; /输出是 3 / ri = 5; coutdvals; /将string对象读入s,遇到空白停止 coutss1s2; /将string对象读入s,遇到空白停止 couts1s2endl; /输出s说明:输入“ Hell

9、o World ”,输出“Hello”,输出的是“Hello World”使用getline读取一整行 string line; while( getline(cin,line) coutlineendl; return 0; return 0;string 的 empty 和 size 操作string:size_type 类型在C+11新标准中,允许编译器通过auto 或者 decltype 来推断变量的类型 auto len = line.aize(); / len 的类型是 string:size_type比较 string 对象字面值和string 对象的相加 string s1=h

10、ello,s2=world; string s3 = s1 + , + s2; couts3endl;当把string对象和字符字面值及字符串字面值混在一条语句中使用时,必须确保每个加法运算符(+)的两侧的运算对象至少有一个是string: string s1=hello,s2=world; string s3 = s1 + , + s2; couts3endl; string s4 = s1 + ,; string s10 = , + s1; /这样也正确 / string s5 = Hello + ,; /两个运算对象不是string string s6 = s1 + , +world;

11、/ string s7 = hello + , + s2; /不能把字面值直接相加 string tmp = s1 + ,; / s6 = tmp + world ; / string s8 = (hello + ,)+s2; /不能把字面值直接相加注意:C+中字符串字面值并不是标准库中类型string的对象。字符串字面值和string是不同的类型。3.2.3 处理string对象的字符3.3 标准库类型vectorVector是模板而非类型,有vector生成的类型必须包含vector中元素的类型,3.3.1定义和初始化vector对象 vectorsvec; /默认初始化,svec不含任何

12、元素 vectorivec; vectorivec2(ivec); /把ivec的元素拷贝给ivec2 vectorivec3 = ivec;/把ivec的元素拷贝给ivec3列表初始化vector对象vectorarticles = a, an, the ;vectorv1 a, an, the ;/列表初始化创建指定数量的元素 vectorivec(10, -1); / 10个int类型的元素,每个元素赋值为-1 vectorsvec(10, Hi); /值初始化-可以只提供vector对象容纳的元素数量而 vectorivec(10); /10个元素,每个元素初始化为0 vectorsv

13、ec(10); /10个元素,每个都是空的字符串对象3.3.2 向vector对象中添加元素vectorv2; /空的vector对象 for (i = 0; i 100; +i) v2.push_back(i);/依次把整数值放入末尾 string word; vectortext; while (cin word) text.push_back(word);3.3.3 其他vector操作-91页表3.5 vectorv1, 2, 3, 4, 5, 6; for (auto &i : v) /对于v中的每个元素,元素i为引用 i *= i; /求元素的平方 for (auto i : v)

14、 /对于v中的每个元素 cout i ; cout endl;不能通过下标形式添加元素vectorivec; /for(decltype(ivec.size() ix = 0; ix != 10; +ix) /ivecix = ix; /可以通过编译,但是不能运行 for (decltype(ivec.size() ix = 0; ix != 10; +ix) ivec.push_back(ix);注意:vector对象的下标运算符可用于访问已存在的元素,而不能用于添加元素3.4 迭代器介绍3.4.1 使用迭代器 /由编译器决定,b和e的类型 /b表示v的第一元素,e表示v末元素的下一个位置

15、vectorv; auto b = v.begin(), e = v.end();注意:如果容器为空,则begin和end返回的是同一容器,都是尾后迭代器迭代器运算符 string s(some string); if (s.begin() != s.end() /确保s非空 auto it = s.begin();/it表示s的第一个字符 *it = toupper(*it);/将当前字符改成大写形式 cout *it; 将迭代器从一个元素移到另外一个元素 string s(some string); for (auto i = s.begin(); i != s.end(); +i) *i = toupper(*i);/当前字符改成大写形式 cout s endl;再加上条件!isspace(*i)就会只是第一个单词变成大写形式迭代器的类型-实际上使用iterator和const_iterator来表示迭代器的类型: vector:iterator it; /it能读写vector的

copyright@ 2008-2022 冰豆网网站版权所有

经营许可证编号:鄂ICP备2022015515号-1