一、程序设计语言的基本成分

1.1 数据成分

数据类型的作用

  1. 便于为数据合理分配存储单元
  2. 便于对参与表达式计算的数据对象进行检查
  3. 便于规定数据对象的取值范围及能够进行的运算

常量与变量

特性 常量 变量
可修改性 不可以修改 可以修改
存储单元 没有分配存储单元 有分配存储单元

1.2 运算成分

逻辑运算

运算符 名称 运算规则 短路运算特性
&& 逻辑与 两边同时为真才为真,有一个假则结果为假 左边为假则表达式结果为假,右边不执行
|| 逻辑或 两边同时为假才为假,有一个真则结果为真 左边为真则表达式结果为真,右边不执行
! 逻辑非 真变假,假变真

运算符结合性

  • 右结合:从右向左算
  • 例如:!3<2,先算 3<2 为假,然后 !假,结果为真
  • 例如:x=1, y=2, z=3,然后 x=y=z
    • 先算 y=z,此时 y 的值为 3
    • 再算 x=y,结果 xyz 的值都为 3

1.3 控制成分

程序的三种基本控制结构:

  1. 顺序结构:按语句先后顺序依次执行
  2. 选择结构(分支结构):根据条件判断选择执行路径
  3. 循环结构(重复结构):根据条件重复执行某段代码

二、函数调用

2.1 传值调用(Call by Value)

  • 定义:将实参的值传递给形参
  • 实参类型:实参可以是变量、常量和表达式
  • 特点
    • 不可以实现形参和实参间双向传递数据的效果
    • 形参的修改不会影响实参

2.2 传引用(地址)调用(Call by Reference)

  • 定义:将实参的地址传递给形参
  • 实参限制:形参必须有地址,实参不能是常量(值)、表达式
  • 特点
    • 可以实现形参和实参间双向传递数据的效果
    • 即改变形参的值同时也改变了实参的值

2.3 传值调用与传地址调用对比

特性 传值调用 传引用(地址)调用
传递内容 实参的值 实参的地址
实参类型 变量、常量、表达式 变量(必须有地址)
双向传递 不可以 可以
形参修改影响实参 不影响 影响

三、编译程序与解释程序对比

特性 编译器 解释器
目标程序 生成独立保存的目标程序 不生成独立的目标程序
运行方式 机器上运行与源程序等价的目标程序 解释程序和源程序参与运行过程
运行后编译器/解释器 编译程序和源程序都不再参与目标程序的运行过程 解释程序和源程序要参与到程序的运行过程中
处理阶段 词法分析、语法分析、语义分析、中间代码生成、代码优化、目标代码生成 词法分析、语法分析、语义分析

四、关键考点速记

  1. 数据类型作用:分配存储单元、检查数据对象、规定取值范围和运算
  2. 常量 vs 变量:常量不可修改、不分配存储单元;变量可修改、分配存储单元
  3. 逻辑与短路:左边为假则整个表达式为假,右边不执行
  4. 逻辑或短路:左边为真则整个表达式为真,右边不执行
  5. 逻辑非右结合:从右向左计算
  6. 三种控制结构:顺序、选择、循环
  7. 传值调用:传值,实参可以是常量/变量/表达式,单向传递
  8. 传地址调用:传地址,实参必须是变量,双向传递
  9. 编译器:生成独立目标程序,不参与运行过程
  10. 解释器:不生成独立目标程序,参与运行过程