美文网首页
C++ 之初体验

C++ 之初体验

作者: Tate_code | 来源:发表于2017-01-19 14:37 被阅读70次

    前言

    C++与Objective-C都是在1980+年代诞生,所以语法糖上面都有很多相似地方,学起来并不难。至于我用的IDE,我直接用的是Xcode,很方便。

    国际惯例,打印hello world

    cout << "hello world" << endl;
    

    这里介绍几个关键词:

    cout 输出
    cin 输入
    endl 换行打印

    cout 语法形式:

    cout << x << endl;
    cout << "x + y =" << x+y << endl;
    

    cin 语法形式:

    cin >> x;
    cin >> x >> y;
    

    这样的输入、输出方式有哪些便利?
    1、不用关注占位符
    2、不用关注数据类型
    3、不易出现问题

    C++命名空间(namespace)

    在C++中,名称(name)可以是符号常量、变量、宏、函数、结构、枚举、类和对象等等。为了避免,在大规模程序的设计中,以及在程序员使用各种各样的C++库时,这些标识符的命名发生冲突,标准C++引入了关键字namespace(命名空间/名字空间/名称空间/名域),可以更好地控制标识符的作用域。

    举个例子:同个年级有相同名字的同学,那样为了避免认错人,我们可以把他们分到不同班级里,这样就区分开来了。这里的班级就可以称为命名空间。

    关于命名空间描述几点

    1、使用namespace定义命名空间。
    2、通过命名空间可以区分具有相同名字的变量。
    3、通过命名空间可以区分具有相同名字的函数。

    代码示例:

    #include <iostream>
    #include <stdlib.h>
    using namespace std;
       namespace     myNum            //填写命名空间的关键字
    {
        int x = 105;
    }
    int main()
    {
        // 使用bool类型定义isOdd,作为状态位
            bool    isFlag = false;       
        
        if(myNum::x % 2 == 0)
        {
            //改变状态位的值,使其为false
            isFlag = false;
        }
        else
        {
            //改变状态位的值,使其为true
            isFlag = true;
        }
        // 判断状态位的值
        if(isFlag)
        {
            // 如果状态位的值为true,则打印变量x是奇数
            cout << x是奇数 ;
        }
        else
        {
            // 如果状态位的值为false,则打印变量x是偶数
            cout << x是偶数 ;
        }
        return 0;
    }
    

    C++ 引用

    代码示例:

    #include <iostream>
    using namespace std;
    int main(void)
    {
        int x = 3;
        //定义引用,y是x的引用
        int &y = x;
        //打印x和y的值
        cout << x << endl;
        cout << y <<endl;
        //修改y的值
        y = 100;
        //再次打印x和y的值
        cout << x << endl;
        cout << y <<endl;  
        return 0;
    }
    

    C++ const关键字

    代码示例:

    //const
    #include <iostream>
    using namespace std;
    int main(void)
    {
        //定义常量count
        const int count = 3;
        const int *p =  &count;
        //打印count次字符串Hello C++
        for(int i = 0; i < count; i++)
        {
            cout << "Hello C++" << endl;
        } 
        return 0;
    }
    

    C++函数新亮点

    函数参数默认值
    void fun( int i,int j=5,int k=10 );//有默认参数值的参数必须在参数表的最右端
    
    函数重载

    在相同作用域内
    用同一个函数名定义的多个函数
    参数个数和参数类型不同

    内联函数

    编译时将函数体代码和实参代替函数调用语句
    内联函数关键字:inline

    关于C++函数形参默认值的说法

    1、当函数有多个形参时,可以都有默认值。
    2、当函数有多个形参时,可以都没有默认值。
    3、当函数有多个形参且都有默认值时,实参个数可以少于形参个数。

    代码示例:

    #include <iostream>
    using namespace std;
    /**
      *函数功能:返回a和b的最大值
      *a和b是两个整数
      */
    int getMax(int a, int b)
    {
        return a > b ? a : b;
    }
    
    /**
      * 函数功能:返回数组中的最大值
      * arr:整型数组
      * count:数组长度
      * 该函数是对上面函数的重载
      */
    int getMax(int *arr,int count)
    {
        //定义一个变量并获取数组的第一个元素
        int maxNum = arr[0];
        for(int i = 1; i < count; i++)
        {
            //比较变量与下一个元素的大小
            if(maxNum < arr[i])
            {
                //如果数组中的元素比maxNum大,则获取数组中的值
                maxNum = arr[i];
            }   
        }
        return maxNum;
    }
    
    int main(void)
    {
        //定义int数组并初始化
        int numArr[3] = {3, 8, 6};
        
        //自动调用int getMax(int a, int b)
        cout << getMax(numArr, 3) << endl;
        
        //自动调用返回数组中最大值的函数返回数组中的最大值
        cout << getMax(numArr[0], numArr[2]) << endl;
        return 0;
    }
    

    C++内存管理

    什么是内存管理?

    内存的本质是资源

    操作系统掌管内存资源
    对于我们开发者,我们能手动申请与归还
    申请/归还内存资源就是内存管理

    如图:

    A0BA3DAE-7E27-412F-AB75-6E31EF74FE7B.png 1A160E69-BD72-4B65-983B-AE17F12E7A9B.png 4164E4A2-EBE1-44A4-9EA9-441213D7889E.png C8FEF922-5C3C-4AF6-9CD6-67F01BED98A5.png

    内容总结
    使用new申请内存,使用delete释放内存
    申请内存需要判断是否成功,释放内存需要设空指针
    new与delete配套使用

    代码示例:

    #include <string.h>
    #include <iostream>
    using namespace std;
    int main(void)
    {
        //在堆中申请100个char类型的内存
        char *str = new char[100];
        //拷贝Hello C++字符串到分配的堆中的内存中
        strcpy(str, "Hello imooc");
        //打印字符串
        cout << str << endl;
        //释放内存
        delete []str;
        str = NULL;
        return 0;
    }
    

    参考资料

    http://www.imooc.com/learn/342
    http://www.imooc.com/learn/381

    相关文章

      网友评论

          本文标题:C++ 之初体验

          本文链接:https://www.haomeiwen.com/subject/eflbbttx.html