计算机导论
计算历史
(略)
计算机的特点与应用
计算机的特点
1.工作自动化
2.运算速度快
3.计算精度高
4.较强的记忆能力
5.逻辑思维和判断能力
6.通用性强
计算机的应用
1.科学计算
2.数据处理
3.过程控制/实时控制
4.辅助技术
5.人工智能
6.多媒体技术,计算机网络等其他方面
数据对象与运算
数据对象
数 据 类 型 = { 基 本 类 型 : 整 型 、 实 型 、 字 符 型 指 针 类 型 构 造 类 型 : 枚 举 、 数 组 、 结 构 体 、 共 用 体 空 类 型 数据类型\;=\; \begin{cases}基本类型:整型、实型、字符型\\指针类型\\构造类型:枚举、数组、结构体、共用体\\空类型 \end{cases} 数据类型=⎩⎪⎪⎪⎨⎪⎪⎪⎧基本类型:整型、实型、字符型指针类型构造类型:枚举、数组、结构体、共用体空类型
整型
- 进制
- 十进制:46,-23
- 八进制:0456
- 十六进制:0x456
- 变量的字长(在内存中所占的空间大小)取决于C编译器。
如,VSC++编译器是win 32环境下的,int在VSC++中int就是32位 - 整型常量的定义形式
int const a = 30;
const int a = 30;
实型(浮点型)
- 常量的两种表现形式
- 小数形式(必须有小数点),小数点前或后可无数字
- 指数形式(科学计数法),用指数形式输出时按规范化形式输出
- 浮点型
- float 有效数字6~7位 4字节 − 3.4 × 1 0 38 3.4 × 1 0 38 -3.4\times10^{38}~3.4\times10^{38} −3.4×1038 3.4×1038
- double 有效数字15~16位 8字节 − 1.7 × 1 0 − 308 1.7 × 10308 -1.7\times10^{-308}~1.7\times10{308} −1.7×10−308 1.7×10308
- 存储格式由IEEE规定,与int不同
字符型
- 常量
- 普通 ‘2’
- 转义 \t
- 变量:1个字节,8位
- 字符串常量,只能存储到字符数组中,以’\0’结尾
数据运算
算术运算
- 算术运算符
优先级:
++(后缀),–(后缀)👉++(前缀),–(前缀),-(负)👉*,/,%👉+,-
结合性:
++(后缀),–(后缀),++(前缀),–(前缀),-(负)右结合
+,-,*,% 左结合
整数/整数 = 整数 - 算数运算符中数据类型转换规则
### 关系与逻辑运算
a = b > c $ ⟺ \iff ⟺ a = ( b > c) - 逻辑运算符:!,||,&&
exp1 || exp2,只要exp1为真,整个表达式为真,与exp2值无关
赋值运算
位运算(主要用于逻辑控制)
~ 按位取反
<< 左移
>> 右移
& 按位与
| 按位或
^ 按位异或
变量的作用域与生命周期
- 变量的作用:存储原始数据,存储中间结果,存储最终结果
- 变量的作用域:局部变量,全局变量
- 局部变量:本函数范围内有效(形参变量,主函数main()中定义的变量,复合语句中定义的变量)
- 全局变量属于一个源程序文件,作用域从定义该变量的位置开始至整个源程序文件结束及有extern说明的其他源文件
- 在函数中使用全局变量,一般应做全局变量说明。全局变量说明可以扩展变量的作用域。说明符为extern。但在一个函数之前定义的全局变量,在该函数内使用可不再加以说明
- 若外部变量与局部变量同名,则外部变量被屏蔽。要引用全局变量,在变量名前加::
- 尽量少使用全局变量(占用内存时间长;降低函数独立性)
动态内存管理函数
内存划分
- 堆区:允许程序运行时,动态地申请存储空间,一般由程序员分配及释放,若不释放,将导致”内存泄漏“,空间被占用但没有使用,系统不知道谁在使用
- 栈区:编译器自动分配与释放,主要用于存放函数的参数,局部变量等对象的值
- 数据段:只读数据段、已被初始化的读写数据段和未初始化段
存储方式
- 静态存储方式:程序编译期间分配固定的存储空间。在程序运行时,在静态存储区为其分配空间。在变量定义时就分配存储单元并一直占用直至整个程序运行结束(全局变量,局部静态变量等)
- 动态存储方式:在程序运行期间进行动态的分配存储空间的方式。程序运行时在动态存储去为其分配空间(函数的形态,定义的动态变量等)
存储分配
- 静态存储分配:程序中定义的动态对象一般在栈上分配其存储空间,分配与释放由系统完成
- 动态存储分配:程序运行前无法确定空间大小, 采用动态申请内存分配,系统将在堆上分配其需要的空间,分配与释放由程序员负责
- 动态空间的申请与释放:C语言允许越界使用,但超过范围之后的正确性不能保证