![](https://img-blog.csdnimg.cn/20201014180756926.png?x-oss-process=image/resize,m_fixed,h_64,w_64)
C++Primer读书笔记
鱼儿冒个泡
这个作者很懒,什么都没留下…
展开
-
【C++Primer读书笔记】第六章 函数——函数基础
局部对象C++语言中,名字有作用域,对象有生命周期:(1)、名字的作用域是程序文本的一部分,名字在其中可见(2)、对象的生命周期是程序执行过程中该对象存在的一段时间1、全局变量:不在任何函数体内,贯穿全局作用域,程序启动时创建,程序结束时销毁2、局部变量:形参和函数体内部定义的变量,在块末销毁,隐藏外层作用域中同名变量的其他声明中(1)、自动对象:只存在于块执行期间的对象。形参也是自动对象,向内存申请空间,函数执行完销毁(2)、静态局部对象:生命周期是全局作用域,前加staticint fu原创 2021-07-03 15:44:30 · 67 阅读 · 0 评论 -
【C++读书笔记】第五章 术语(English)
blockbreak statementcase labelcatch clausecompound statementcontinue statementdangling elsedefault labeldo while statementexception classexception declarationexception handlereception safeexception statementflow of controlfor statementgoto原创 2021-04-06 16:51:54 · 53 阅读 · 0 评论 -
【C++读书笔记】第五章 语句
空语句程序某处语法上需要一条语句而逻辑上不需要(建议使用时加注释)while(cin>>s && s!= sought) ;/*空块的作用等同于空语句**上面的;也可以用{}代替 */悬垂 elseswitchcase关键字和它对应的值一起被称为case标签,case标签必须是整形常量表达式case 3.14; //错误:不是整数case ivak; //错误:不是常量...原创 2021-04-06 16:51:34 · 55 阅读 · 0 评论 -
【C++Primer读书笔记】第四章术语(English)
arithmetic conversionassociatitybinary operator/unary operatorscastcompound expressionconst_castconversiondynamic_castexpressionimplicit conversionintegral promotionlvalueoperandoperatororder of evaluationoverloaded operatorprecedencepromo原创 2021-03-30 00:47:17 · 53 阅读 · 0 评论 -
【C++Primer读书笔记】第四章 表达式
1、小整数类型(如bool、char、short)通常会被提升为较大的整数类型,主要是int。2、当一个对象被用作右值时,用的是对象的值(内容);当一个对象被用作左值时,用的是对象的身份。取地址符作用于一个左值运算对象,返回一个指向该运算对象的指针,这个指针是一个右值。3、对于没有指定执行顺序的运算符来说,如果表达式指向并修改了同一个对象,将引发错误并产生未定义的行为。int i=0;cout<<i<<" "<<++i<<endl; //未定义的原创 2021-03-30 00:47:06 · 101 阅读 · 0 评论 -
【C++读书笔记】第三章 术语表(English)
beginbuffer overflowC-style stringclass templatecompiler extensioncontainercopy initializationdiference_typedirect initializationemptyendgetlineindexinstantiationiteratoriterator arithmeticnull-terminated stringoff-the-end iteratorpointer原创 2021-03-30 00:46:28 · 64 阅读 · 0 评论 -
【C++Primer读书笔记】第三章 字符串、向量、数组——多维数组
多维数组初始化int a[3][4] = { {0,1,2,3}, //第一行初始值 (4,5,6,7}, //第二行初始值 {8,9,10,11} //第二行初始值};int a[3][4] = {0,1,2,3,4,5,6,7,8,9,10,11}; //与之前等价//显式初始化每行首元素int a[3][4] = {{0}, {1}, {2}};//显式初始化第一行,其他元素初始化为0int ix = (0,3,6,9};...原创 2021-03-30 00:46:07 · 72 阅读 · 0 评论 -
【C++Primer读书笔记】第三章 字符串、向量、数组——与旧代码的接口
混用string对象和C风格字符串//允许使用以空字符结束的字符数组来初始化string对象或者为string对象赋值string s("hello,world");//在string对象的加法运算中,允许空字符结束的字符数组作为一个运算对象//(不能两个运算对象都是)//在string对象的符合赋值运算中允许空字符结束的字符数组作为右侧的运算对象string ss("world");string si = "hello" + ss + "!";...原创 2021-03-28 12:52:42 · 60 阅读 · 0 评论 -
【C++Primer读书笔记】第三章 字符串、向量、数组——C风格字符串
C风格字符串函数//定义在头文件cstring中strlen(p); //计算p长度,空字符不计入内strcpy(p1,p2); //p2拷贝到p1上,计算错p1大小将引发严重错误!strcat(p1,p2); //p1末尾加上p2,计算错p1大小将引发严重错误!strcmp(p1,p2); //比较p1和p2字典序 //p1>p2返回一个正值,p1==p2返回0,p1<p2返回一个负值传入函数的指针必须以空字符结束char c[] = {'C','+','+原创 2021-03-27 23:51:03 · 71 阅读 · 0 评论 -
【C++Primer读书笔记】第三章 字符串、向量、数组——数组
数组的初始化int a1[5]; //默认初始化int a2[5] = {}; //默认初始化int a3[5] = {1,2,3,4,5};int a4[5] = {1,2,3}; //等价于int a4[5] = {1,2,3,0,0};int a5[5] = {1,2,3,4,5,6}; //错误!int a6[] = {1,2,3}; //等价于int a6[3] = {1,2,3};string c[3] = {"hi","bye"};//等价于string原创 2021-03-25 14:39:18 · 70 阅读 · 0 评论 -
【C++Primer读书笔记】第三章 字符串、向量、数组——迭代器
标准库容器都支持迭代器,而只有少数(vector,string)支持下标访问迭代器运算符++iter;--iter;*iter;iter->mem; // == (*iter).memiter1 == iter2;iter1 != iter2; //所有标准库迭代器都定义了==,!=;而大多数未定义<,>,<=,>=运算符迭代器类型//可读可写vector<int>::iterater it1;string::iterater it2;原创 2021-03-22 16:16:00 · 89 阅读 · 0 评论 -
【C++Primer读书笔记】第三章 字符串、向量、数组——向量
vector不能用下标形式添加元素vector<int>a; //空vector对象for(int i=0;i!=5;++i) a[i]=i; //错误!vector<int>b(5); //b有5个元素,值为0for(int i=0;i!=5;++i) b[i]=i; //正确运用下标只能对已经存在的元素进行操作,访问不存在的元素时,编译器无法发现错误,而是在运行时产生错误(产生不可预知的值)vector<int>c;cout<&l原创 2021-03-22 14:54:11 · 49 阅读 · 0 评论 -
【C++Primer读书笔记】第三章 字符串、向量、数组——字符串
定义和初始化string对象string s1;string s2(s1);string s3=s2;string s4("hello");string s5="hello";string对象上的操作//读写string对象string s;cin>>s; cout<<s; //自动忽略开头空白,知道下一处空白为止//输入" hello world" 输出"hello"//使用getline读取一整行string s;getline(cin,s)原创 2021-03-21 16:57:11 · 69 阅读 · 0 评论 -
【C++Primer阅读笔记】第二章术语(English)
addressalias declarationarithmetic typeautobase typebindbytecompound typeconstconst pointerconst referenceconst expressionconstexprconversiondata memberdeclarationdeclaratordecltypedefault initializationdefinitionescape sequenceglobal原创 2021-03-11 15:26:25 · 79 阅读 · 0 评论 -
【C++Primer读书笔记】2.4 const限定符
默认情况下,const限定符仅在文件内有效不同文件定义同名的const类型变量,默认为不同的定义。如果希望不同文件共享同一个const变量,则这个const变量在声明和定义时都要加extern。//file_1.cc定义并初始化了一个常量,该常量可以被其他文件访问extern const int bufSize=fcn();//file_1.h头文件extern const int bufSize=fcn();//与file_1.cc定义的bufSize是同一个...原创 2021-03-10 16:17:33 · 111 阅读 · 0 评论 -
【C++Primer读书笔记】2.3.3 理解复合类型的声明
指向指针的指针int ival=1024;int *pi=&ival; //pi指向一个int型的数int **ppi=π //ppi指向一个int型的指针cout<<ival<<"\t"<<*pi<<"\t"<<**ppi<<endl;//输出1024 1024 1024cout << pp << endl; //输出指针pp的地址cout << *pp &原创 2021-03-04 18:51:13 · 118 阅读 · 0 评论 -
【C++Primer读书笔记】2.3.2 void*指针
void* 指针void* 是一种特殊类型的指针,可用于存放任意对象的地址。double obj=3.14,*pd=&obj; //正确:void*能存放任意类型对象的地址void *pv=&obj; //obj可以是任意类型的对象pv=pd; //pv可以存放任意类型的指针void指针能做的事:1、与其他指针比较2、作为函数输入输出3、赋给其他void指针void*指针不能直接操作所指对象:我们不知道所指对象的类型,也就无法确定对象可以做哪些操作总原创 2021-03-03 20:37:21 · 107 阅读 · 1 评论 -
【C++Primer读书笔记】2.3.1引用
概念理解:1、不能定义引用的引用:int a=1;int &b=a;int &c=b; //合法,这里实际上是使c成为a的另一个引用int &&d=b; //不合法,这是“引用的引用”,类似“指针的指针”2、引用必须绑定到对象上,不能指向一个字面值或者是表达式的结果...原创 2021-03-03 20:08:05 · 194 阅读 · 1 评论 -
【C++Primer读书笔记】2.2.4名字作用域
#include<iostream>using namespace std;int a=42;int main(){ int b=0; cout<<a<<"\t"<<b<<endl; //输出42 0 int a=0; cout<<a<<"\t"<<b<<endl; //输出 0 0 cout<<::a<<"\t"<<b<<原创 2021-03-03 12:48:31 · 91 阅读 · 0 评论 -
【C++Primer读书笔记】2.1.3字面值常量
1、整型和浮点型字面值 eg: 42, 3.142、字符和字符串字面值 eg: ‘a’ , “hello,world”3、布尔字面值 true false4、指针字面值 nullptr原创 2021-03-02 20:00:39 · 66 阅读 · 0 评论 -
【C++Primer读书笔记】2.1.2含有无符号类型表达式
1、当一个表达式既有无符号类型又有int值,那个int值就会转换成无符号数unsigned u=10;int i=-42;cout<<i+i<<endl; //输出-84cout<<u+i<<endl; //整数-42首先转化为无符号数//如果int占32位,输出42949672642、当从无符号数减去一个负值时,不管这个数是不是无符号数,我们都必须确保答案不能是负值unsigned u1=42,u2=10;cout<<u1-u原创 2021-03-02 19:45:01 · 153 阅读 · 0 评论 -
【C++Primer读书笔记】2.1.2 数据溢出
1、当我们赋给无符号类型一个超出它范围的数据,结果是初始值对无符号类型表示数值总数取模后的余数。2、当我们赋给带符号类型一个超出它表示范围的值,结果是未定义的。此时,程序可能继续工作,可能崩溃,也可能产生垃圾数据。...原创 2021-03-01 18:19:31 · 77 阅读 · 0 评论 -
【C++Primer读书笔记】第一章术语(English)
argumentassignmentblockbufferbuilt-in typeCerr(character)string literalcinclassclass typeclogcommentconditioncoutcurly bracedata structureedit-compile-debugend-of-fileexpressionfor/if/while statementfunctionfunction namefunction body原创 2021-03-01 08:14:45 · 77 阅读 · 1 评论 -
【C++Primer读书笔记】1.4.4统计输入每个数连续出现多少次
统计输入一组数,每个数连续出现多少次:#include<iostream>using namespace std;int main(){ int currVal=0,val=0; if(cin>>currVal){ int cnt=1; while(cin>>val){ if(val==currval){ ++cnt; }else{ cout<<currval<<"occurs"<<cn原创 2021-03-01 07:47:16 · 218 阅读 · 3 评论 -
【C++Primer读书笔记】1.4.3读取数量不定的输入数据
讨论while(condition)中condition为流对象时循环终止的情形#include<iostream>using namespace std;int main(){ int sum=0,val=0; while(cin>>val){ sum+=val; } cout<<sum<<endl; return 0;}《C++Primer》:循环条件实际检测的是cin。当我们使用一个istream对象作为条件时,其效果是检查原创 2021-02-28 09:13:30 · 189 阅读 · 0 评论