C++ primer之第一章

         之前学习过一个多月的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;
}

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值