寒假学习笔记(1)

2018.2.7

常变量 const

  • const 数据类型 常变量名=初始值;
  • 使用const关键字指定常变量;
  • 定义时必须初始化;
  • 不能再次被赋值;
  • 用const定义与用define定义的区别:
    区别1
    define是宏定义,程序在预处理阶段将用define定义的内容进行了替换。因此程序运行时,常量表中并没有用define定义的常量,系统不为它分配内存。
    const定义的常量,在程序运行时在常量表中,系统为它分配内存。
    区别2
    define定义的常量,预处理时只是直接进行了替换。所以编译时不能进行数据类型检验。
    const定义的常量,在编译时进行严格的类型检验,可以避免出错。
    区别3
    define定义表达式时要注意“边缘效应”,例如如下定义:
    #define N 2+3 //我们预想的N值是5,我们这样使用N
    int a = N/2; //我们预想的a的值是2.5,可实际上a的值是3.5
    原因在于在预处理阶段,编译器将 a = N/2处理成了 a = 2+3/2;这就是宏定义的字符串替换的“边缘效应”因此要如下定义
    #define N (2+3)
    const定义表达式没有上述问题
    const定义的常量叫做常变量原因有二:
    1,const定义常量像变量一样检查类型。
    2,const可以在任何地方定义常量,编译器对它的处理过程与变量相似,只是分配内存的地方不同(常量在静态区,变量在栈区)。

引用

  • 引用类型&引用变量名=被引用变量;
  • 被引用变量必须是一个已经定义的变量;
  • 引用变量和被引用变量共用内存;
  • 引用传递(1):引用传递将被调函数的形参定义成主调函数中实参变量的引用,被调函数通过该引用间接访问主调函数中的变量;
  • 引用传递(2):实际上修改的是实参,也就是说这是一种双向数据传递机制。不同于值传递的单向性;

特殊函数

  • 带默认形参值的函数;

    • 带默认值的形参必须定义在形参列表的后面;
  • 重载函数;
    - 如果两个函数的形参个数不同,或数据类型不同,那么这两个函数就可以重名,称为重载函数。

  • 内联函数(inline);
    - 编译源代码时将函数代码直接嵌入到每一个调用语句处,而在执行时不再进行函数跳转和数据传递。
    - 只能是简单函数,复杂函数会以非内联形式出现。


寒假学习计划

posted @ 2018-02-07 22:37  水喵桑  阅读(400)  评论(0编辑  收藏  举报