C++ primer 一、二、三章
第一章 开始
课后习题及答案:
https://blog.csdn.net/qq_29762941/article/details/82658064
1.在main函数中return 0 和 return -1的区别
对程序执行来说,没有区别;0 和-1 最终以程序退出状态码返回,代表该程序执行是否有异常。
该问题可以延伸到main函数是如何被执行的:
fork()->execve()->_start启动例程->为main函数执行准备好argc、argv、envp等->调用main()->回到启动例程,执行exit(main函数的返回状态码)->exit()会执行一些退出函数,比如刷新,关闭文件描述符等操作。
参考:https://cloud.tencent.com/developer/article/1439033
2.std::cin, std::cout, printf, scanf的用法及实现
1)cin、cout头文件; printf、scanf头文件<stdio.h>
2) cin、scanf多个输入参数之间,用空格或enter键都可以,如果一个输入参数里包含空格,那么空格之后的内容会丢失;
3)用法参考:
https://www.cnblogs.com/MAX-ZMY/p/11540058.html
https://blog.csdn.net/weixin_44023525/article/details/84963597
4)实现:没找到
3.重定向标准输入、标准输出
< 文件名 重定向了标准输入;> 文件名 重定向了标准输出;
./程序名 < 文件名 > 文件名
第二章 变量和基本类型
1.基本内置类型
1)算术类型:字符、整型、布尔、浮点
char、wchar_t:
https://blog.csdn.net/freestyle4568world/article/details/49591739
https://blog.csdn.net/cwj649956781/article/details/15338129
2)整型、浮点型、单精度、双精度:
https://blog.csdn.net/zyhmz/article/details/570754733) 空类型:用于特殊场合,不对应具体的值,如return void
2.类型转换
https://www.jianshu.com/p/c678e5dab87e
猜测:编译器会将类型转换翻译成命令?
3.变量
1)声明和定义:
https://www.jianshu.com/p/92e81ecc8737
2)struct和数组的初始化为0的方法:
https://blog.csdn.net/wordwarwordwar/article/details/85001876
4.复合类型
1) 引用:别名;必须初始化,一旦与初始值绑定,不可解绑再重新赋值。不可赋空值。
https://blog.csdn.net/weixin_34240520/article/details/864032682)指针:指针本身就是对象,可以不初始化,但建议初始化,否则易引起运行时错误。
3)引用和指针的区别:
https://blog.csdn.net/u012611644/article/details/89055038
https://baijiahao.baidu.com/s?id=1624099009536720942&wfr=spider&for=pc
汇编代码:从汇编来看,引用是个常量指针,大小和指针一样大,是有内存空间的
15: int x = 0;
008118AE C7 45 F8 00 00 00 00 mov dword ptr [x],0 16: int& y = x;
008118B5 8D 45 F8 lea eax,[x]
008118B8 89 45 EC mov dword ptr [y],eax 17: int* z = &x;
008118BB 8D 45 F8 lea eax,[x]
008118BE 89 45 E0 mov dword ptr [z],eax 18: y = 3;
008118C1 8B 45 EC mov eax,dword ptr [y]
008118C4 C7 00 03 00 00 00 mov dword ptr [eax],3 19: *z = 4;
008118CA 8B 45 E0 mov eax,dword ptr [z]
008118CD C7 00 04 00 00 00 mov dword ptr [eax],4
dword 双字 就是四个字节 ptr pointer缩写 即指针 []里的数据是一个地址值,这个地址指向一个双字型数据
比如mov eax, dword ptr [12345678] 把内存地址12345678中的双字型(32位)数据赋给eax
5.const 限定符
顶层const\底层const
https://blog.csdn.net/jinsan0129/article/details/81907900
6.处理类型
1)typedef\using
2)auto\decltype
https://blog.csdn.net/wk_bjut_edu_cn/article/details/81951764
3)auto、decltype的区别
auto不仅推导了类型,还进行了初始化;而decltype只采用类型;
auto在推导数组的类型时,会将数组名转换为指针;而decltype不会;
auto在推导类型时,会忽略顶层const,而decltype不会;
加双层括号的decltype得到的类型永远是引用;
https://blog.csdn.net/chigusakawada/article/details/80071295
第三章 字符串、向量和数组
推荐使用!= 和 == 而不是<、>来做判断,因为C++的大多数容器都重载了!= 等,但没有重载<、>等。
1.using
1)命名空间的使用
2)起别名:using int_array = int[4];
(等同于C语言中的typedef int int_array[4] )
2.标准库类型string
1)string对象的初始化:直接初始化(用构造函数),拷贝初始化(用一个已有的对象来初始化)
2) string对象会自动忽略开头的空白(即空格符、换行符、制表符等)并从第一个真正的字符开始读起,直到遇见下一处空白位置3) getline函数的参数是一个输入流和一个string对象,函数从给定的输入流中读入内容,直到遇到换行符为止(注意换行符也被读进来了),然后把所读的内容存入到那个string对象中去(注意不存换行符)。
3.C风格字符串
1)C语言中没有string类型,用char[]来存储字符串,因此string类型对应的>、+、等操作不适用于char[]
2)C语言中的字符串,应使用<string.h>中的字符串处理函数,strlen、strcmp,strcat,strcpy等。
3) 可以用C语言中的字符串初始化string类型,但不可用string类型来初始化C语言中的字符串,除非使用c_str()
4.标准库类型vector
1)欲使用vector,应先包含头文件
2) 定义和初始化vector对象,应注意()和 {}的区别:
3)注意vector的resize()和reserve()的区别:
https://www.cnblogs.com/qlee/archive/2011/05/16/2048026.html
5.数组
1)不允许拷贝和赋值。不能将数组的内容拷贝给其他数组作为初始值,也不能用数组为其他数组赋值。
2)使用数组名字的时候,编译器一般会把它转换成指针,因此定义数组的时候必须指定数据类型,不允许用auto关键字由初始值的列表推断类型。:
3)C++11使用于数组的标准库函数begin()和end()
4)可以用数组初始化vector,但不可用vector初始化数组:
5)多维数组
C++ primer 一、二、三章相关推荐
- C Primer Plus第三章总结
C Primer Plus第三章总结 关于整数和浮点数 关于整数的常用的关键词有:char.int .long.longlong.unsigned-- 浮点数常用的关键词有:double.float ...
- C++ Primer Plus 第四(二,三)章答案 复合类型
复习题 第二三章只做了几个题,从第四章开始都做了. 代码全都是编译运行通过了的 practice 2.7.7(第二章编程练习第七题) #include <iostream>using na ...
- 【数分书单】业务学习《从零开始做运营入门篇》第一/二/三章小结
<从零开始做运营入门篇>by 张亮 第一章 关于运营的一些实话实说 1 苦逼的运营产品两兄弟 运营需要积累,实力的积累,经验的积累,对用户了解程度的积累,对数据敏感程度的积累:长期磨练出 ...
- C Primer Plus 第三章 数据和C 阅读笔记
第3章 数据和C 3.1 示例程序 3.1.1 程序中的新元素 3.2 变量与常量数据 3.3 数据:数据类型关键字 3.4 C语言基本数据类型 3.4.1 int类型 3.4.2 其他整数类型 3. ...
- 《C++ primer》--第三章
习题3.2 什么是默认构造函数? 解答: 默认构造函数就是在没有显示提供初始化式时调用的构造函数.它由不带参数的构造函数,或者为所有形参提供默认实参的构造函数定义.如果定义某个类的变量时没有提供初始化 ...
- 部分代码_C primer plus 第三章 (代码部分)
3.1 platinum.c /* platinum.c -- your weight in platinum */ #include<stdio.h> int main(void) {f ...
- C Primer Plus 第三章编程练习一
1.通过试验(即编写带有此类问题的程序)观察系统如何处理整数上溢.浮点 数上溢和浮点数下溢的情况. #include <stdio.h> #include <limits.h> ...
- C Primer Plus第三章课后练习答案
其他章节答案 /*The third Unit programming answer*/ //Project 1 #include <stdio.h> int main(void) {in ...
- c++ primer plus 第三章课后习题
1.编写一个程序,要求用户使用一个整数指出自己的身高(单位为英寸,然后将身高转换为英寸和英尺).该程序使用下划线字符来指示输入位置.另外,使用一个const符号来表示转换因子. 自己写的 #inclu ...
最新文章
- Tor 出口节点将运行在图书馆的电脑上
- 咖啡,一种心情的境界
- python实现api server_使用Python的http.server实现一个简易的Web Api对外提供HanLP拼音转换服务...
- svn Error:Wrong committed revision number: -1。
- 复旦大学女教授告诉你:朋友是什么?
- gerber文件怎么导贴片坐标_PCBA贴片加工厂家的上机贴片编程
- 2021巨量引擎连锁经营行业洞察报告
- kitti数据集简介、百度网盘分享 kitti-object、kitti-tracking 全套数据集 自动驾驶
- 求10000以内n的阶乘(openjudge 2923)
- 【优化算法】人工鱼群优化算法(AFSA)【含Matlab源码 1078期】
- 世界上最好玩的6种表情符号编程语言
- 计算机毕业设计-SSM商场餐厅管理系统-JavaWeb商场餐厅管理系统
- Android变声(SoundTouch)
- android 颜色透明度16进制换算
- Vue项目在页面添加水印功能
- 一级下拉对应多个二级下拉联动
- 使用EFR32作为Zigbee/Thread的sniffer的用法
- 【计算机网络】虚拟IP原理
- 超市服务器软件系统软件,星宇超市收银软件服务器
- CreateDialog和DialogBox的区别,模态对话框与非模态对话框