您的位置:首页 > 编程语言 > C语言/C++

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;}
内容来自用户分享和网络整理,不保证内容的准确性,如有侵权内容,可联系管理员处理 点击这里给我发消息
标签: