Skip to content

Latest commit

 

History

History
76 lines (74 loc) · 4.72 KB

review.md

File metadata and controls

76 lines (74 loc) · 4.72 KB

编程知识快速复习

1. 基本结构

  • C++语言由头文件和源文件组成。
  • 头文件
    • 包含:版权与版本信息,宏定义,函数声明和类的声明。
    • 宏定义为是了防止头文件被重复引用。
    • <>引用头文件则直接在系统库中查找头文件;
    • "" 用头文件则先在当前工程目录下查找,若工程目录中不存在然后在系统库中查找。
  • 源文件
    • 包含:版权与版本信息,对头文件的引用,系统功能代码的实现。用ifndef/define/endif结构产生预处理的宏定义块。
  • 类成员函数可以在类声明中被定义,并且自动生成内联函数,这虽然会使书写方便,但会造成风格上的不一致,因此建议头文件中只存放声明而不定义。
  • 头文件的作用:
    • 1.很多时候不便公开头文件代码,用头文件来调用库功能,编译器从库中提取相应的代码;
    • 2.头文件能加强安全类型的检查,如果接口实现错误会报错,以便开发者调试。

2.C++基本要素

  • 标识符

    • 只能是字母、数字、下划线组成,且不能以数字开头。标识符在C++中区分大小写,长度是任意的,一般前1024个是有意义的。C语言中一般前16个是有效的。
  • 常量

    • 在运行时不能被改变,在定义常量时可以设置初始值。
    • 对于常量,编译器将其放置于一个只读的存储区域。
  • 变量初始化的几种形式:

      int min = 0; //初始化为0
      int min = min; //初始化为自身,这种合法,但不明智
      int min(10); //隐式初始化为10
      int min = 10, max = min + 20; //后续变量可以利用前续变量作为初始化值
      int min = int(); //利用数据类型的构造函数初始化
      double max = double();
    

3.变量的存储类型

  • 变量的声明告知编译器变量的名称和数据类型,变量的定义为变量分配存储区域
  • 使用extern只声明而不定义变量;若一个文件中声明定义一个全局变量int var=0; 在另一个文件中声明extern int var; 即可访问此变量;
  • 静态变量
    • static存储类型表示变量在函数或文件内的“持久性”,也称为静态变量,静态变量可分为局部静态变量和全局静态变量。
    • 局部静态变量
      • 函数内的变量用static修饰时,将被分配在持久的存储区域,当函数调用结束后并不释放,保留其值以便下次调用。
      • 局部静态变量的作用域为当前函数,不能被外界函数和文件访问;
    • 全局静态变量
      • 作用域仅限于当前定义的文件
      • 不能被其它文件使用extern关键字访问;
  • register
    • 使用register关键字,表示变量将被放置在CPU寄存器中,访问register变量要比访问普通变量快得多,但register只能用于局部变量或作为函数的形式参数
  • 变量有静态存储和动态存储
    • 全局变量和静态变量是静态存储的
    • 普通的局部变量是动态存储的
    • auto关键字表示变量动态存储
    • 默认情况下,局部变量均属于auto变量。

4.数据类型

  • 数值类型
    • 整型
      • 有符号型
        • (signed) int 4Bytes
        • (signed) short (int) 2Bytes
        • (signed) long (int) 4Bytes
      • 无符号型
        • unsigned (int) 4Bytes
        • unsigned short (int) 2Bytes
        • unsigned long (int) 4Bytes
    • 实型
      • float 4Bytes
      • double 8Bytes
      • long double 16Bytes
    • 实数比较问题
      • 尽量不要使用“==”或“!=”,而要使用“>=”或“<=”之类的运算符。因为用等于或不等于时,若程序精度要求较高,可能产生未知的错误,也可能产生未知的结果。
      • 通常在比较实数时要定义实数的精度,在这个精度内来确定两数的等或不等。
  • 字符类型
    • C++中用单引号来确定字符变量,用双引号来确定字符串变量,字符是以ASCII的形式存储的,因此可以直接将整数赋值给字符变量。
    • 字符存储用一个字节
  • 数组类型
    • 数组的初始化要注意一些细节,如:定义二维数组时,可以省略第一维的长度,但不可以省略第二维的长度。
  • 布尔类型
    • 布尔类型和整数类型可以相互赋值。
  • 枚举类型
    • 枚举类型是用int类型实现的,占用4个字节,定义格式为:enum<枚举类型名>{常量1,常量2,…},定义枚举类型时可以为各常量提供一个整数值,默认情况第一个数为0,没有定义的值应为前一个值加1。
    • 在定义函数时将函数参数设置为枚举类型,这样可以限制调用函数必须提供枚举类型中的某个常量,而不能随意输入一个整数。

https://blog.csdn.net/huixieqingchun/article/details/79342869