C++ primer之第一章
2018-02-21 13:57
204 查看
之前学习过一个多月的C++,觉得知识过于零碎,也没有完整的复习一遍,很多知识一知半解的。所以打算重读C++ Primer5th (之前读的是4th),第5th 加入了C++ 11的许多特性,很值得再次学习一遍。潘爱民(译者)说过,第五版适合多读几遍,每一遍都会有不同的理解,自己要养成这种习惯,慢慢读,课后习题也要认真去做。 看到前言有介绍了几本书,记录下来 —《C++ Concurrency in Action》学习C++并发最佳选择; —《Linux多线程服务端编程》陈硕疑问: 1,函数类型用int 与void 返回0与没有返回值 有什么区别?前面加有void 的函数,不能返回任何数据,return语句不能使用,这类函数应该将所有应该实现的功能在本函数内全部实现。但是并不是不能与外部交换数据,仍然可以通过引用型参数传递数据,只是调用时不能直接接受返回值,因为就没有返回值。前面有int的函数,返回值是整型数,可能是结果是整数的数,也可能是运行状态,成功或失败的标识,函数调用时可以直接利用返回信息,实现一些功能。总结:int可以用return返回数据 把数据传输到主函数中 可以用于计算,而void是没有返回数据的 只能用于 比较大小之类的功能。收获: 1.当无符号数与有符号数相加减时,编译器会将有符号数自动转换为无符号数,同时这两个相加的结果是等于无符号数的摸+有符号数的最终结果。 2.函数体外的变量 未初始化时,默认为0,函数体内的变量不会默认初始化,显示未定义的,(即该变量会显示一个不确定的值,这事非常危险的!) 3.不能把临时对象作为实参传给非const引用。如下: int i = 42; const int &r = i; //ok int r2 = i*2;//error r2是一个非常量引用,i*2会产生临时对象,C++将这种语法视为非法在函数传参时,也会遇到这种情况如下:void conv(string &str) { }int main() {conv("dasd"); // 这里错了,编译器自动生成一个string(“dasd”)临时对象,不能将该临时对象传给非const引用}因此,需要将其改为:void conv(string str) { } // 值传递或者void conv(const string &str) { } // const引用,因为标准规定临时对象是不能更改的,所以要加上const修饰。
程序题:#include <iostream>using namespace std;int fun1_9(){ int sum = 0; int i = 50; while(i<100) { sum += i; i++; } cout<<"50加到100的结果是:"<<sum; return 0;}int fun1_10(){ int i = 10; while(i>0) { cout<<i<<endl; --i; } return 0;}void fun1_11(){ cout<<"请输入两个数:"; int v1,v2; cin>>v1>>v2; while(v1<v2) { cout<<v1; v1++; }}void fun1_12(){ int temp,sum = 0; while(cin>>temp) { sum += temp; } cout<<sum;}void fun1_13() //统计在输入值数字中,重复数字的个数{ int cur; int next; if(cin>>cur) { int count = 1; while(cin>>next) { if(cur == next) { ++count; } else { cout<<cur<<"出现了"<<count<<"次"; cur = next; count = 1; } } cout<<cur<<"出现了"<<count<<"次"; }}int main(){ fun1_13(); //fun1_12(); //fun1_11(); //fun1_10(); // fun1_9(); return 0;}
程序题:#include <iostream>using namespace std;int fun1_9(){ int sum = 0; int i = 50; while(i<100) { sum += i; i++; } cout<<"50加到100的结果是:"<<sum; return 0;}int fun1_10(){ int i = 10; while(i>0) { cout<<i<<endl; --i; } return 0;}void fun1_11(){ cout<<"请输入两个数:"; int v1,v2; cin>>v1>>v2; while(v1<v2) { cout<<v1; v1++; }}void fun1_12(){ int temp,sum = 0; while(cin>>temp) { sum += temp; } cout<<sum;}void fun1_13() //统计在输入值数字中,重复数字的个数{ int cur; int next; if(cin>>cur) { int count = 1; while(cin>>next) { if(cur == next) { ++count; } else { cout<<cur<<"出现了"<<count<<"次"; cur = next; count = 1; } } cout<<cur<<"出现了"<<count<<"次"; }}int main(){ fun1_13(); //fun1_12(); //fun1_11(); //fun1_10(); // fun1_9(); return 0;}
相关文章推荐
- C++ primer的第一章的主要内容
- 《C++ Primer》读书笔记 第一章
- C++ primer 第一章
- C++ Primer 笔记 第一章
- c++ primer 学习笔记-第一章
- 《C++ Primer 5th edition》 第一章 开始
- c++ primer学习笔记之第一章
- C++ Primer | 第一章 开始
- C++ Primer 第一章 快速入门
- [C++ Primer]第一章 快速入门
- c++ primer 第一章自学
- C++ Primer 第一章 快速入门
- C++ Primer第一章
- C++ primer 读书笔记--第一章 快速入门
- 《C++ Primer》读书笔记-第一章 Hello World
- C++ Primer 第一章 if 语句应用输入两个数,打印出这两个数之间的整数
- C++ Primer 第5版 第一章书店程序Sales_item问题
- C++ Primer第一章
- C++ primer第一章习题
- C++ Primer 习题解答 第一章