Giter Club home page Giter Club logo

cpp's Introduction

C++学习

C++优势:不仅提供一些高级的抽象机制,而且根基和C在同一层面;同时可以支持4种不同的编程风格:C风格、基于对象、面向对象和泛型.
C++11出现前的缺陷:缺少自动内存管理和对象级别的消息发送机制.
C++11出现后的优势:增强了语言机制和完善的标准库,为C++语言的编程风格带来了革命性的变化,写出的代码简洁优雅,并引入了各种类型智能指针.

##目录

[第1章 开始]
######Ex1.2 输入和输出
C++语言并未定义任何输入输出语句,而是使用标准库来提供IO机制.具体的输入输出对象请查看标准库提供的IO类.
'std::cout'操作符:向流中写数据(也就是向设备中写数据).
'std::endl'操作符:结束当前行,将缓冲区的数据刷到关联的设备上.
'std::cin'操作符:向流中读取数据(也就是从设备中读取数据). ######Ex1.6
回答:该程序不合法;第二、三行没有输出符对象. 修改方法:1、在第二、三行添加输出符对象;2、将下面两行合并到第一行;
######Ex1.12
回答:该程序完成了从-100到100累加功能;SUM最终的值为0;
######Ex1.13
回答:利用for循环重写while习题,读者自己实现。
######Ex1.14 回答:for循环适合于精细循环次数的场合,优点是运行速度快,基本适合任何循环场合.
while循环就是属于那种对循环体次数要求不是那么精密的场合使用. ######Ex1.15 回答:编译器的错误信息识别,请读者亲自尝试,这里不再赘述. ######Ex1.17 回答:如果输入所有值都是相同的,回车后不会输出任何信息,CTRL+D后输出该数的统计数字;
如果输入的数字没有一个相同,前面N-1个数字输出的次数都是1,但是最后一个数的信息无法输出,CTRL+D后输出最后一个数字的统计次数. ######Ex1.18 Ex1.19 回答:不在赘述. ######Ex1.24 回答:和1.23程序一样.

[第一部分 C++基础]

[第2章 变量和基本类型]

重点:初始化和赋值在C++中是两种不同的概念。变量只能被定义一次,但是可以声明多次(extern 只能在函数体外部声明) 默认初始化:跟变量的类型和位置有关系,如:整型变量在函数体外部被默认初始化为0 ,在函数体内则是未定义。 constexpr如果定义指针,直接把定义的变量置为顶层const; auto定义的变量必须有初始值,类型要一致; decltype:选择并返回操作数的数据类型 ######Ex2.1 回答:int、long、long long、short都是整型类型,但是它们表示的范围不同,int占用2个字节 16位;long占用4个字节 32位;long long占用8个字节 64位;short占用1个字节 8位.
signed和unsigned表示有符号和无符号类型,它们之间的区别是表示数据的区间不同,如 unsigned int 和 int 类型分别表示区间是 065535 -3276832767
float 和 double都表示浮点类型,但是精度不一样,float精度一般是6位有效数字,double表示10位有效数字 ######Ex2.2 回答:应该选择double 或者 long double类型,金融行业对资金的精度要求较高。 ######Ex2.3 回答:32;4294967264;32;-32;0;0。 ######Ex2.5 回答:char,wchar_t,字符串[char数组{'a','\0'}],宽字符串[wchar_t数组];
int,unsigned int,long,unsigned long,八进制,16进制; float,float,long dougle;
int,unsigned int,float,科学计数法,保留两位小数;
######Ex2.6 回答:有区别,前面两个数是十进制,后面是八进制,但是month写法错误。 ######Ex2.7 回答:"\145"反斜杠\后面三个数字表示字符 e;后面 \012表示换行符;
科学计数法,数据类型long double,float,long double;
######Ex2.9 回答:a) std::cin>>后面是变量或者是对象,不能定义类型;
b) 使用浮点数列表初始化整型变量,由于信息会丢失,编译器会报错; c) wage未定义的类型,无法参与赋值。 ######Ex2.10 回答:"",0,未定义,""; ######Ex2.11 回答:定义,定义,声明 ; ######Ex2.12 回答:c) 错误,只能由字母数字下划线组成,必须以字母或下划线开头 ;d)错误 必须以字母或下划线开头;
######Ex2.13 回答:100; ######Ex2.14
回答:100 45; ######Ex2.15
回答:b d非法,引用必须绑定到对象上,不能绑定字面值,引用不是一个对象,因此无法单独定义; ######Ex2.16
回答:a) 合法 给对象d赋值;b) 合法,将i的值赋值给d c)合法 将d的值赋值给i d)合法 将d对象的值赋值给i; ######Ex2.17
回答:10 10; ######Ex2.19
回答:指针是对象,引用为非对象; ######Ex2.20
回答:i=4242;
######Ex2.21 回答:a)非法,指针的类型和i的类型不一致;b) 非法,不能使用整型对象初始化指针;c)合法;
######Ex2.22 回答:判断指针对象p是否为空值;判断该指针所指向的值是否为空值; ######Ex2.23 回答:无法判断,因为指针对象可以被任意赋值,该地址是否指向合法对象无法判断。 ######Ex2.24 回答:void类型的指针可以存放任意对象的地址;但是lp只能存放long类型对象的地址,因此p合法,lp不合法;
######Ex2.25 回答:a) ip是int
类型,i是int类型,r是int类型引用;b)i是int类型,ip是int类型;c)ip是int,ip2是int类型; ######Ex2.26 回答:a)不合法,const变量必须被初始化;b)合法;c)合法;d)++sz不合法, const变量不能修改其值 ######Ex2.27 回答:a)非法,引用的初始化必须是对象;b)合法,使用int类型的地址初始化int类型的指针;c)合法,const引用绑定常量;d)合法,使用int类型的地址初始化int类型指针;e)合法,将int类型地址拷贝给int*类型指针;
f) r2必须初始化;g)合法,使用i初始化i2,定义i的引用r; ######Ex2.28 回答:a)定义int类型变量,定义int类型的常量指针cp,其中cp必须被初始化;b)定义int类型的指针p1和int类型的常量指针p2,其中p2必须被初始化;
c)定义int类型常量ic,但是ic没有被初始化,定义该常量的引用r;d)定义指向一个常量的int类型的常量指针p3,p3没有被初始化;e)定义一个指向int型常量的指针; ######Ex2.29
回答:a) 合法;b)非法,类型不匹配;c)非法,类型不匹配;d)非法,向只读变量p3赋值;e)非法,向只读变量赋值;f)非法,向只读变量赋值; ######Ex2.30
1、顶层const;2、底层const;3、顶层const; ######Ex2.31
1、非法;2、非法;3、非法;4、非法;5、合法
######Ex2.32
回答:int null=0,*p=&null;
######Ex2.332.35
回答:请读者自行验证; ######Ex2.36
回答:a、b、c、d的值为4;
######Ex2.37
回答:a、b、c、d的值为3,4,3,3;
######Ex2.38 回答: 1) int a=10;auto b=a;decltype(a) d=a; 2) const int a=10;auto b=a;decltype(a) c=a; ######Ex2.39 错误:结构定义后需要‘;’ ######Ex2.40 struct Sales_data{std::string bookNo;unsigned int bookNum;double bookPrice;}; ######Ex2.41
2.42 回答:请读者自行实现

[第3章 字符串、向量和数组]

######Ex3.1 回答:忽略
######Ex3.3
回答:string的输入运算会自动忽略开头的空白,从第一个真正的字符开始读起,在下一个空白处结束。
######Ex3.9
回答:合法,输出空字符串 ######Ex3.11
回答:合法,const char &类型 ######Ex3.12
回答:合法,定义一个vector,其元素为vector;非法,ivec元素的类型与svec元素的类型不一致;合法,使用10个"null"字符串初始化svec; ######Ex3.13
回答:1、0各元素;
2、10个元素,每个元素值为0;
3、10个元素,每个元素的值为42;
4、10个元素,每个元素的值为0;
5、2个元素,每个元素值10,42;
6、10个元素,每个元素值为""
7、10个元素,每个元素的值为"hi"

[第4章 表达式]
[第5章 语句]
[第6章 函数]
[第7章 类]
[第二部分 C++标准库]

[第8章 IO库]
[第9章 顺序容器]
[第10章 泛型算法]
[第11章 关联容器]
[第12章 动态内存]
[第三部分 设计者的工具]

[第13章 拷贝控制]
[第14章 重载运算与类型转换]
[第15章 面向对象程序设计]
[第16章 模板与泛型编程]
[第17章 标准库特殊设施]
[第18章 用于大型程序的工具]
[第19章 特殊工具与技术]

###MarkDown语法说明 #####代码区段


int main()
{
 return 0;
}

#####连接的定义 This is an example inline link. [id]: http://example.com/ "Optional Title Here" #####强调 single asterisks double underscores #####代码 Use the printf() function. #####图片 Alt text [id]: url/to/image "Optional title attribute"

cpp's People

Contributors

zhengxu119 avatar

Watchers

James Cloos avatar  avatar

Recommend Projects

  • React photo React

    A declarative, efficient, and flexible JavaScript library for building user interfaces.

  • Vue.js photo Vue.js

    🖖 Vue.js is a progressive, incrementally-adoptable JavaScript framework for building UI on the web.

  • Typescript photo Typescript

    TypeScript is a superset of JavaScript that compiles to clean JavaScript output.

  • TensorFlow photo TensorFlow

    An Open Source Machine Learning Framework for Everyone

  • Django photo Django

    The Web framework for perfectionists with deadlines.

  • D3 photo D3

    Bring data to life with SVG, Canvas and HTML. 📊📈🎉

Recommend Topics

  • javascript

    JavaScript (JS) is a lightweight interpreted programming language with first-class functions.

  • web

    Some thing interesting about web. New door for the world.

  • server

    A server is a program made to process requests and deliver data to clients.

  • Machine learning

    Machine learning is a way of modeling and interpreting data that allows a piece of software to respond intelligently.

  • Game

    Some thing interesting about game, make everyone happy.

Recommend Org

  • Facebook photo Facebook

    We are working to build community through open source technology. NB: members must have two-factor auth.

  • Microsoft photo Microsoft

    Open source projects and samples from Microsoft.

  • Google photo Google

    Google ❤️ Open Source for everyone.

  • D3 photo D3

    Data-Driven Documents codes.