前言:C语言是一种高效、快速、通用的编程语言,被广泛应用于操作系统、数据库、编译器、网络驱动程序、游戏开发等领域。C语言的历史可以追溯到20世纪70年代,由贝尔实验室的Dennis Ritchie于1972年推出。C语言是一种中级语言,它结合了低级语言速度快的特点,以及高级语言开发方便的特点。C语言的特点包括:简洁、紧凑、表达力强、可移植性好、运算符丰富等。
- the history of c programing
- c 语言的特点
1. 基础性语言
2. 语法简洁,紧凑,方便,灵活
3. 运算符,结构丰富
4. 结构化,模块化编程
5. 移植性好,执行效率高
6. 允许对硬件直接操作- c 语言学习建议
- 概念的正确性
- 动手
- 阅读优秀的程序段
- 大量练习,面试题
c课程讲解思路
1. 基本概念
2. 数据类型,运算符和表达式
3. 输入输出专题
4. 流程控制
5. 数组
6. 指针
7. 函数
8. 构造类型
9. 动态内存管理
10. 调试工具和调试技巧
11. 常用库函数
hello.c :
c源文件 — 预处理 —编译 —汇编— 链接 — 可执行程序
一、基本概念
1. 以helloworld 为例对写程序的思路提出如下要求:
2. 头文件正确包含的重要性
3. 以函数为单位来进行程序的编写
4. 声明部分+实现部分
5. return 0 (exit(0) 给他的父进程看的)
6. echo $?
算法:解决问题的方法
1. 流程图
2. NS 图
3. FSM 有限状态机
程序:用某种语言实现算法
二、数据类型,运算符和表达式
1. 数据类型:(基本类型,构造类型,指针类型,空类型void)
2. 数据存储(占用的字节数)
3. 不同类型的数据间进行转换
4. 特殊性:
5. bool 类型
6. float 类型的比较
7. char 类型的符号(c 标准未定义)
8. 不同形式的零直
三、常量与变量
-
常量:
分类:
1)整形常量 1,790, 67,52
2)实行常量:3.14, 52.26
3)字符常量:‘\015’, ‘\x7f’
4)字符串常量:“helloworld”, “”
5)标识常量: #define,处理在程序的预处理阶段,不检查语法,只是单纯宏名和宏体的替换。 -
变量:用来保存一些特定的内容,并且在程序执行过程中变化的量。
1) 定义:【存储类型】 数据类型 标识符
2) TYPE NAME = VALUE;
3)标识符:由字母 数字 下划线组成且不能以数字开头的表示序列。
4)存储类型: auto static register extern(说明型)
1》auto: 默认,自动分配空间
2》register:(建议型)寄存器类型,只能定义局部变量,不能定义全局变量。一个寄存器类型的变量无法打印地址。
3》static :静态型,自动初始化为0值或空值,且其值具有继承性。
4》extern : 说明型,不能改变变量的类型。 -
变量的生命周期和作用范围:
1)全局变量和局部变量
2)局部变量和局部变量
四、运算符和表达式
1. 表达式与语句的区别
2. 运算符部分:
1)每个运算符所需要的参与运算的操作数的个数
2)结合性
3)优先级
4)运算符的特殊用法
如: %, = 与==,逻辑运算符的短路特性
5)位运算的重要意义
将操作数中第n位置1,其他位不变:num = num | 1 << n;
将操作数中第n位置0,其他位不变:num = num & ~(1 << n);
6)优先级:算术运算符 > 移位运算符 > 关系运算符 > 位运算符 > 逻辑运算符 > 条件运算符 > 赋值运算符 > 符合赋值运算符 > 逗号运算符
五、输入,输出专题
input && output ----> I/O(标准IO,文件IO或系统IO)
1. 格式化输入输出函数:scanf printf
1)int printf(const char *format, ...);
2) int scanf(const char *format, ...);
2. 字符输入输出函数:getchar ,putchar
3. 字符串输入输出函数:fgets fputs
六、流程控制
顺序,选择,循环
简单结构与复杂结构:自然流程
NS图,流程图 工具Dia
1. 关键字:
2. if else switch case while do while continue break
七、数组
一维数组
1. 定义:【存储类型】数据类型 标识符【下标】 下标:必须是整形常量或整形表达式。
2. 初始化
不初始化
部分初始化
全部初始化
3. 元素引用
4. 数组名
5. 数组越界
二维数组
1. 定义,初始化
2. 元素引用
3. 存储形式
4. 深入理解二维数组
字符数组
1. 定义,初始化存储特点
【存储类型】数据类型 标识符【下标】
单个字符初始化
用字符串常量初始化
2. 输入输出
3. 常用函数
多维数组
八、指针
1. 变量与地址
2. 指针与指针变量
3. 直接访问与简接访问
4. 空指针与野指针
5. 空类型
6. 指针与初始化的书写规则
7. 指针与运算
& * 关系运算 ++ --
8. 指针与数组
指针与一维数组
指针与二维数组
指针与字符数组
9. const 与指针
10. 指针数组与数组指针
11. 多级指针
九、函数
1. 函数的定义
数据类型 函数名(【形式参数说明表】)
2. 函数的传参
值传递
地址传递
全局变量
3. 函数的调用
嵌套调用
递归
4. 函数与数组
5. 函数与指针
指针函数
返回值 *函数名(形参);
如:int * func(int);
函数指针
类型 (*指针名)(形参);
如:int (*p)(int);
十、构造类型
结构体
1. 产生即意义
2. 类型描述
struct 结构体名
{
数据类型 成员1;
数据类型 成员2;
...
};
3. 嵌套定义
4. 定义变量(变量,数组,指针),初始化及成员引用
成员引用:变量名.成员名
指针->成员名
(*指针).成员名
5. 占用内存空间大小
6. 函数传参(值,地址)
共用体
1. 产生及意义
2. 类型描述
3. 嵌套定义
4. 定义变量(变量,数组,指针),初始化及成员引用
5. 占用内存大小
6. 函数传参(值,地址)
7. 位域
枚举
enum 标识符
{
成员 1,
成员 2,
成员 3
};
十一、动态内存管理
malloc ralloc realloc free
1. 规则:谁申请,谁释放。