logo资料库

C语言基础讲义2018修订版.doc

第1页 / 共144页
第2页 / 共144页
第3页 / 共144页
第4页 / 共144页
第5页 / 共144页
第6页 / 共144页
第7页 / 共144页
第8页 / 共144页
资料共144页,剩余部分请下载后查看
1.C语言概述
1.1 C语言
1.1.1 计算机结构组成
1.1.2 计算机系统组成
1.2 为什么要学习C语言
1.2.1 C语言特点
1) 优点
2) 缺点
1.2.2 学习C语言理由
1.2.3 C语言应用领域
1.2.4 C语言关键字
1.2.5 学习C常见困惑
1.3 第一个C语言程序:HelloWorld
1.3.1 编写C语言代码:hello.c
1.3.2 通过gcc编译C代码
1) gcc编译器介绍
2) Windows平台下gcc环境配置
3) Windows平台下编译代码
1.3.3 代码分析
1) include头文件包含
2) main函数
3) {} 括号,程序体和代码块
4) 注释
5) printf函数
6) return语句
1.4 system函数
1.4.1 system函数的使用
1.5 C语言编译过程
1.5.1 C程序编译步骤
1.5.2 gcc编译过程
1) 分步编译
2) 一步编译
1.5.3 查找程序所依赖的动态库
1.6 CPU内部结构与寄存器(了解)
1.6.1 64位和32位系统区别
1.6.2 寄存器名字(了解)
1.6.3 寄存器、缓存、内存三者关系
1.7 汇编语言
1.7.1 VS中C语言嵌套汇编代码(了解)
1.7.2 VS反汇编
1.8 集成开发环境IDE
1.8.1 Qt Creator
1.8.2 Microsoft Visual Studio
1) VS常用快捷键
2) VS2013的C4996错误
2. 数据类型
2.1 常量与变量
2.1.1 关键字
2.1.2 数据类型
2.1.3 常量
2.1.4 变量
1) 变量
2) 声明和定义区别
2.1.5 使用示例
2.2整型:int
2.2.1 整型变量的定义和输出
2.2.2 整型变量的输入
2.2.3 short、int、long、long long
2.2.4 有符号数和无符号数区别
1) 有符号数
2) 无符号数
3) 有符号和无符号整型取值范围
2.3 sizeof关键字
2.4字符型:char
2.4.1 字符变量的定义和输出
2.4.2 字符变量的输入
2.4.2 ASCII对照表
2.4.3 转义字符
2.5实型(浮点型):float、double
2.6 进制
2.6.1 二进制
2.6.2 八进制
2.6.3 十六进制
2.6.4 C语言如何表示相应进制数
2.7 计算机内存数值存储方式
2.7.1 原码
2.7.2 反码
2.7.3 补码
2.7.4 补码的意义
2.7.5 数值溢出
2.8类型限定符
2.9字符串格式化输出和输入
2.9.1 字符串常量
2.9.2 printf函数和putchar函数
2.9.3 scanf函数与getchar函数
3. 运算符与表达式
3.1 常用运算符分类
3.2 算术运算符
3.3 赋值运算符
3.4 比较运算符
3.5 逻辑运算符
3.6 运算符优先级
3.7 类型转换
3.7.1 隐式转换
3.7.2 强制转换
4. 程序流程结构
4.1 概述
4.2 选择结构
4.2.1 if语句
4.2.2 if…else语句
4.2.3 if…else if…else语句
4.2.4 三目运算符
4.2.5 switch语句
4.3 循环结构
4.3.1 while语句
4.3.2 do…while语句
4.3.3 for语句
4.3.4 嵌套循环
4.4 跳转语句break、continue、goto
4.3.1 break语句
4.3.2 continue语句
4.3.3 goto语句(无条件跳转,尽量少用)
5. 数组和字符串
5.1 概述
5.2 一维数组
5.2.1 一维数组的定义和使用
5.2.2 一维数组的初始化
5.2.3 数组名
5.2.4 强化训练
1) 一维数组的最值
2) 一维数组的逆置
3) 冒泡法排序
5.3二维数组
5.3.1 二维数组的定义和使用
5.3.2 二维数组的初始化
5.3.3 数组名
5.3.4 强化训练
5.4多维数组(了解)
5.5 字符数组与字符串
5.5.1 字符数组与字符串区别
5.5.2 字符串的初始化
5.5.3 字符串的输入输出
1) gets()
2) fgets()
3) puts()
4) fputs()
5) strlen()
5.5.4 强化训练:字符串追加
6. 函数
6.1 概述
6.1.1 函数分类
6.1.2 函数的作用
6.1.3 函数的调用:产生随机数
6.2 函数的定义
6.2.1 函数定义格式
6.2.2 函数名字、形参、函数体、返回值
1) 函数名
2) 形参列表
3) 函数体
4) 返回值
6.3 函数的调用
6.3.1函数执行流程
6.3.2 函数的形参和实参
6.3.3 无参函数调用
6.3.4有参函数调用
6.3.5 函数返回值
6.4 函数的声明
6.5 main函数与exit函数
6.6 多文件(分文件)编程
6.6.1 分文件编程
6.6.2 防止头文件重复包含
7. 指针
7.1 概述
7.1.1 内存
7.1.2 物理存储器和存储地址空间
7.1.3 内存地址
7.1.4 指针和指针变量
7.2 指针基础知识
7.2.1 指针变量的定义和使用
7.2.2 通过指针间接修改变量的值
7.2.3 指针大小
7.2.4 野指针和空指针
7.2.5万能指针void *
7.2.6 const修饰的指针变量
7.3 指针和数组
7.3.1 数组名
7.3.2 指针操作数组元素
7.3.3 指针加减运算
1)加法运算
2)减法运算
7.3.4 指针数组
7.4 多级指针
7.5 指针和函数
7.5.1 函数形参改变实参的值
7.6.2 数组名做函数参数
7.6.3 指针做为函数的返回值
7.7 指针和字符串
7.7.1 字符指针
7.7.2 字符指针做函数参数
7.7.3 const修饰的指针变量
7.7.4 指针数组做为main函数的形参
7.7.5 项目开发常用字符串应用模型
1) strstr中的while和do-while模型
a)while模型
b)do-while模型
2) 两头堵模型
3) 字符串反转模型(逆置)
7.7.8 字符串处理函数
1) strcpy()
2) strncpy()
3) strcat()
4) strncat()
5) strcmp()
6) strncmp()
7) sprintf()
8) sscanf()
9) strchr()
10) strstr()
11) strtok()
12) atoi()
7.8 指针小结
8. 内存管理
8.1 作用域
8.1.1 局部变量
8.1.2 静态(static)局部变量
8.1.3 全局变量
8.1.4 静态(static)全局变量
8.1.5 extern全局变量声明
8.1.6 全局函数和静态函数
8.1.7 总结
8.2 内存布局
8.2.1 内存分区
8.2.2 存储类型总结
8.2.3内存操作函数
1) memset()
2) memcpy()
3) memmove()
4) memcmp()
8.2.4 堆区内存分配和释放
1)malloc()
2)free()
8.3 内存分区代码分析
1) 返回栈区地址
2) 返回data区地址
3) 值传递1
4) 值传递2
5) 返回堆区地址
9. 复合类型(自定义类型)
9.1 结构体
9.1.1 概述
9.1.2 结构体变量的定义和初始化
9.1.3 结构体成员的使用
9.1.4 结构体数组
9.1.5 结构体套结构体
9.1.6 结构体赋值
9.1.7 结构体和指针
1)指向普通结构体变量的指针
2)堆区结构体变量
3)结构体套一级指针
9.1.8 结构体做函数参数
1)结构体普通变量做函数参数
2)结构体指针变量做函数参数
3)结构体数组名做函数参数
4)const修饰结构体指针形参变量
9.2 共用体(联合体)
9.3 枚举
9.4 typedef
10. 文件操作
10.1 概述
10.1.1磁盘文件和设备文件
10.1.2 磁盘文件的分类
10.1.3 文本文件和二进制文件
1)文本文件
2)二进制文件
10.2.1 文件指针
10.2.2 文件的打开
10.2.3 文件的关闭
10.3 文件的顺序读写
10.3.1 按照字符读写文件fgetc、fputc
1)写文件
2)文件结尾
3)读文件
10.3.2按照行读写文件fgets、fputs
1)写文件
2)读文件
3)强化训练:文件版四则运算
10.3.3按照格式化文件fprintf、fscanf
1)写文件
2)读文件
3)强化训练:文件版排序
10.3.4按照块读写文件fread、fwrite
1)写文件
2)读文件
t3)强化训练:大文件拷贝
10.4 文件的随机读写
10.5 Windows和Linux文本文件区别
10.6 获取文件状态
10.7 删除文件、重命名文件名
10.8 文件缓冲区
10.8.1文件缓冲区
10.8.2磁盘文件的存取
10.8.3更新缓冲区
Easy 搞定 C 语言 (基础篇) 北京市昌平区建材城西路金燕龙办公楼一层 电话:400-618-9090 1
1. C 语言概述 1.1 C 语言 一提到语言这个词语,自然会想到的是像英语、汉语等这样的自然语言,因为 它是人和人交换信息不可缺少的工具。 而今天计算机遍布了我们生活的每一个角落,除了人和人的相互交流之外,我 们必须和计算机角落。 用什么的什么样的方式和计算机做最直接的交流呢?人们自然想到的是最古老 也最方便的方式——语言,而 C 语言就是人和计算机交流的一种语言。 语言是用来交流沟通的。有一方说,有另一方听,必须有两方参与,这是语言 最重要的功能:  说的一方传递信息,听的一方接收信息;  说的一方下达指令,听的一方遵循命令做事情。 语言是人和人交流,C 语言是人和机器交流。只是,人可以不听另外一个人, 但是,计算机是无条件服从。 语言有独特的语法规则和定义,双方必须遵循这些规则和定义才能实现真正的 交流。 1.1.1 计算机结构组成 北京市昌平区建材城西路金燕龙办公楼一层 电话:400-618-9090 2
1.1.2 计算机系统组成 1.2 为什么要学习 C 语言 1.2.1 C 语言特点 1) 优点  代码量小  执行速度快  功能强大  编程自由 2) 缺点  写代码实现周期长  可移植性较差  过于自由,经验不足易出错  对平台库依赖较多 1.2.2 学习 C 语言理由 1.2.3 C 语言应用领域 C 语言的应用极其广泛,从网站后台,到底层操作系统,从多媒体应用到大型 网络游戏,均可使用 C 语言来开发:  C 语言可以写网站后台程序  C 语言可以专门针对某个主题写出功能强大的程序库 北京市昌平区建材城西路金燕龙办公楼一层 电话:400-618-9090 3
 C 语言可以写出大型游戏的引擎  C 语言可以写出另一个语言来  C 语言可以写操作系统和驱动程序,并且只能用 C 语言编写  任何设备只要配置了微处理器,就都支持 C 语言。从微波炉到手机,都是 由 C 语言技术来推动的 1.2.4 C 语言关键字 C 语言仅有 32 个关键字,9 种控制语句,34 种运算符,却能完成无数的功能: 北京市昌平区建材城西路金燕龙办公楼一层 电话:400-618-9090 4
1.2.5 学习 C 常见困惑 北京市昌平区建材城西路金燕龙办公楼一层 电话:400-618-9090 5
1.3 第一个 C 语言程序:HelloWorld 1.3.1 编写 C 语言代码:hello.c #include int main() { //这是第一个 C 语言代码 printf("hello world\n"); return 0; } C 语言的源代码文件是一个普通的文本文件,但扩展名必须是.c。 1.3.2 通过 gcc 编译 C 代码 1) gcc 编译器介绍 编辑器(如 vi、记事本)是指我用它来写程序的(编辑代码),而我们写的代码 语句,电脑是不懂的,我们需要把它转成电脑能懂的语句,编译器就是这样的 转化工具。就是说,我们用编辑器编写程序,由编译器编译后才可以运行! 编译器是将易于编写、阅读和维护的高级计算机语言翻译为计算机能解读、运 行的低级机器语言的程序。 gcc(GNU Compiler Collection,GNU 编译器套件),是由 GNU 开发的编程 语言编译器。gcc 原本作为 GNU 操作系统的官方编译器,现已被大多数类 Unix 操作系统(如 Linux、BSD、Mac OS X 等)采纳为标准的编译器,gcc 同样适用 于微软的 Windows。 gcc 最初用于编译 C 语言,随着项目的发展 gcc 已经成为了能够编译 C、C++、 Java、Ada、fortran、Object C、Object C++、Go 语言的编译器大家族。 编译命令格式: gcc [-option1] ... g++ [-option1] ...  命令、选项和源文件之间使用空格分隔  一行命令中可以有零个、一个或多个选项  文件名可以包含文件的绝对路径,也可以使用相对路径  如果命令中不包含输出可执行文件的文件名,可执行文件的文件名会自动 生成一个默认名,Linux 平台为 a.out,Windows 平台为 a.exe 北京市昌平区建材城西路金燕龙办公楼一层 电话:400-618-9090 6
gcc、g++编译常用选项说明: 选项 含义 -o file 指定生成的输出文件名为 file -E -S(大写) -c(小写) 只进行预处理 只进行预处理和编译 只进行预处理、编译和汇编 2) Windows 平台下 gcc 环境配置 windows 命令行界面下,默认是没有 gcc 编译器,我们需要配置一下环境。由 于我们安装了 Qt,Qt 是一个集成开发环境,内部集成 gcc 编译器,配置一下 环境变量即可使用 gcc。 a)进入 Qt 安装目录: b)拷贝 gcc 所在的路径(不同安装目录有所差异) C:\Qt\Qt5.5.0\Tools\mingw492_32\bin c) 设置 windows 环境变量 计算机(右击)-> 属性: 北京市昌平区建材城西路金燕龙办公楼一层 电话:400-618-9090 7
如果是 win7,双击 Path 后,把拷贝的路径追加到后面,路径之间需要英 文” ; ”分隔: 北京市昌平区建材城西路金燕龙办公楼一层 电话:400-618-9090 8
分享到:
收藏