第二单元的思维导图

《第二单元的思维导图》

一、中心主题:数据类型、运算符与表达式

1.1 数据类型

1.1.1 基本数据类型

  • 整型 (Integer)

    • int: 标准整型,通常占用4个字节 (32位)
    • short intshort: 短整型,通常占用2个字节 (16位)
    • long intlong: 长整型,通常占用4或8个字节 (取决于编译器和平台)
    • long long intlong long: 长长整型,通常占用8个字节 (64位)
    • 无符号整型 (unsigned):
      • unsigned int
      • unsigned short int
      • unsigned long int
      • unsigned long long int
    • 作用: 存储整数,根据取值范围选择合适的类型,无符号类型存储非负整数。
    • 注意: 不同平台和编译器可能对同一类型分配不同的字节数,需要使用sizeof()运算符来确认。
  • 浮点型 (Floating-point)

    • float: 单精度浮点型,通常占用4个字节 (32位),精度约为7位有效数字。
    • double: 双精度浮点型,通常占用8个字节 (64位),精度约为15位有效数字。
    • long double: 长双精度浮点型,通常占用10或12或16个字节 (取决于编译器和平台),精度更高。
    • 作用: 存储带有小数部分的数值,double通常是首选,精度足够且效率较高。
    • 注意: 浮点数存在精度问题,不适合进行精确比较。
  • 字符型 (Character)

    • char: 通常占用1个字节 (8位),可以存储ASCII字符集中的字符。
    • 作用: 存储单个字符,例如字母、数字、符号。
    • 本质: 字符在计算机中以整数形式存储,实际上是存储字符对应的ASCII码值。
  • 布尔型 (Boolean)

    • bool: C++内置类型,表示真 (true) 或假 (false)。
    • 作用: 用于逻辑判断和条件控制。
    • 本质: true通常表示为1,false通常表示为0。
  • 空类型 (Void)

    • void: 表示无类型。
    • 作用:
      • 函数没有返回值时,声明返回类型为void
      • 函数没有参数时,声明参数列表为void (C++中可省略)。
      • void*指针可以指向任何类型的内存地址。

1.1.2 派生数据类型

  • 指针 (Pointer)

    • 存储变量的内存地址。
    • int* p;: 指向int类型变量的指针。
    • 作用: 允许间接访问和修改变量,实现动态内存分配,提高程序效率。
    • 注意: 必须初始化后才能使用,否则可能导致程序崩溃。
    • NULL指针: 指向地址0,表示指针未指向任何有效内存地址。
    • *void 指针**: 通用指针类型,可以指向任何类型的内存地址,但需要强制类型转换才能进行解引用操作。
  • 数组 (Array)

    • 相同数据类型元素的集合。
    • int arr[10];: 声明一个包含10个int类型元素的数组。
    • 作用: 存储多个相同类型的数据,方便批量处理。
    • 注意: 数组的大小在编译时确定,访问数组元素时需要注意下标越界问题。
  • 结构体 (Struct)

    • 不同数据类型元素的集合。

    • c++ struct Student { string name; int age; float score; };

    • 作用: 将多个相关的数据组织在一起,方便管理和操作。

  • 枚举 (Enum)

    • 为整数常量定义别名。

    • c++ enum Color { RED, GREEN, BLUE };

    • 作用: 提高代码可读性和可维护性。

  • 联合体 (Union)

    • 多个成员共享同一块内存空间。

    • c++ union Data { int i; float f; char str[20]; };

    • 作用: 节省内存空间,但在同一时刻只能存储一个成员的值。

1.1.3 类型转换

  • 隐式类型转换 (Implicit Type Conversion)
    • 编译器自动进行的类型转换,通常发生在运算过程中,将精度低的类型转换为精度高的类型。
    • 例如:int + float -> float + float
  • 显式类型转换 (Explicit Type Conversion)
    • 程序员手动进行的类型转换。
    • C风格: (type) expression
    • C++风格: static_cast<type>(expression), dynamic_cast<type>(expression), reinterpret_cast<type>(expression), const_cast<type>(expression)
    • 作用: 强制将一个类型转换为另一个类型,需要谨慎使用,可能导致数据丢失或类型安全问题。

1.2 运算符

1.2.1 算术运算符

  • + 加法
  • - 减法
  • * 乘法
  • / 除法
  • % 取余 (模运算)
  • ++ 自增
  • -- 自减

1.2.2 关系运算符

  • == 等于
  • != 不等于
  • > 大于
  • < 小于
  • >= 大于等于
  • <= 小于等于

1.2.3 逻辑运算符

  • && 逻辑与 (AND)
  • || 逻辑或 (OR)
  • ! 逻辑非 (NOT)

1.2.4 位运算符

  • & 按位与
  • | 按位或
  • ^ 按位异或
  • ~ 按位取反
  • << 左移
  • >> 右移

1.2.5 赋值运算符

  • = 简单赋值
  • += 加法赋值
  • -= 减法赋值
  • *= 乘法赋值
  • /= 除法赋值
  • %= 取余赋值
  • &= 按位与赋值
  • |= 按位或赋值
  • ^= 按位异或赋值
  • <<= 左移赋值
  • >>= 右移赋值

1.2.6 其他运算符

  • sizeof 返回变量或类型的大小 (字节数)
  • ?: 条件运算符 (三元运算符)
  • , 逗号运算符
  • . 成员访问运算符 (用于结构体和对象)
  • -> 成员指针访问运算符 (用于结构体和对象)
  • [] 数组下标运算符
  • () 函数调用运算符

1.2.7 运算符优先级与结合性

  • 优先级: 决定了表达式中不同运算符的计算顺序。
  • 结合性: 决定了相同优先级运算符的计算顺序 (从左到右或从右到左)。
  • 记忆: 括号优先级最高,赋值运算符优先级最低,单目运算符高于双目运算符。 算数运算符>关系运算符>逻辑运算符>赋值运算符
  • 建议: 尽量使用括号来明确运算顺序,避免混淆。

1.3 表达式

1.3.1 算术表达式

  • 使用算术运算符进行计算的表达式。
  • 例如:a + b * c

1.3.2 关系表达式

  • 使用关系运算符进行比较的表达式。
  • 结果为bool类型 (truefalse)。
  • 例如:a > b, x == y

1.3.3 逻辑表达式

  • 使用逻辑运算符连接的表达式。
  • 结果为bool类型 (truefalse)。
  • 例如:(a > b) && (c < d)

1.3.4 赋值表达式

  • 使用赋值运算符进行赋值的表达式。
  • 例如:a = b + c

1.3.5 条件表达式

  • 使用条件运算符 (?:) 的表达式。
  • condition ? expression1 : expression2
  • 如果conditiontrue,则返回expression1的值,否则返回expression2的值。

1.3.6 逗号表达式

  • 使用逗号运算符连接的多个表达式。
  • 从左到右依次计算每个表达式,返回最后一个表达式的值。
  • 例如:(a = 1, b = 2, a + b) 结果为3

1.4 常量与变量

1.4.1 常量

  • 在程序执行过程中,值不能被修改的量。
  • 字面常量: 直接写出的常量值,例如:10, 3.14, "Hello"
  • 符号常量: 使用const关键字定义的常量,例如:const int MAX_SIZE = 100;
  • 宏常量: 使用#define预处理指令定义的常量,例如:#define PI 3.14159
  • 枚举常量: 枚举类型中的成员。

1.4.2 变量

  • 在程序执行过程中,值可以被修改的量。
  • 定义: 声明变量的数据类型和名称。
  • 初始化: 为变量赋初值。
  • 作用域: 变量可以访问的范围。
    • 局部变量: 在函数或代码块内部定义的变量,只能在该函数或代码块内部访问。
    • 全局变量: 在函数外部定义的变量,可以在整个程序中访问。
  • 生存期: 变量存在的时期。
    • 自动变量: 局部变量,在函数调用时创建,在函数返回时销毁。
    • 静态变量: 使用static关键字修饰的变量,只初始化一次,在程序运行期间一直存在。
  • 存储类别:
    • auto: 自动存储 (默认,通常省略)。
    • static: 静态存储。
    • register: 寄存器存储 (建议编译器将变量存储在寄存器中,提高访问速度,但并非所有变量都能存储在寄存器中)。
    • extern: 外部存储 (用于声明在其他文件中定义的变量)。

1.5 输入输出

1.5.1 标准输入输出流

  • iostream头文件
  • cin: 标准输入流,用于从键盘读取数据。
  • cout: 标准输出流,用于向屏幕输出数据。
  • cerr: 标准错误输出流,用于输出错误信息。
  • clog: 标准日志输出流,用于输出日志信息。

1.5.2 格式化输入输出

  • 使用iomanip头文件中的控制符来格式化输入输出。
  • setw(n): 设置字段宽度为n。
  • setprecision(n): 设置浮点数的精度为n。
  • fixed: 以固定点表示法显示浮点数。
  • scientific: 以科学计数法表示浮点数。
  • setfill(c): 设置填充字符为c。
  • left: 左对齐。
  • right: 右对齐。

二、重点与难点

  • 数据类型的选择:根据实际需求选择合适的数据类型,避免浪费内存空间,保证数据精度。
  • 运算符优先级与结合性:理解运算符的优先级和结合性,避免表达式出现歧义。
  • 类型转换:理解隐式类型转换和显式类型转换,避免数据丢失或类型安全问题。
  • 指针:理解指针的概念和使用,掌握指针的运算和应用。
  • 输入输出:掌握标准输入输出流的使用,了解格式化输入输出的方法。

三、学习方法

  • 多练习:通过编写程序来巩固所学知识。
  • 多思考:理解数据类型、运算符和表达式的本质。
  • 查阅资料:参考C++标准文档和相关书籍。
  • 交流讨论:与同学和老师交流学习心得。
上一个主题: 西游记思维导图 下一个主题: 汤姆索亚的思维导图

相关思维导图推荐

分享思维导图