logo资料库

传智播客C语言提高讲义(2018年最新版).doc

第1页 / 共81页
第2页 / 共81页
第3页 / 共81页
第4页 / 共81页
第5页 / 共81页
第6页 / 共81页
第7页 / 共81页
第8页 / 共81页
资料共81页,剩余部分请下载后查看
1程序内存模型
1.1就业班引言
1.1.1问题引出
企业需要能干活的人
C工程开发需要什么(培养什么能力)
C项目开发的套路(一套接口)
培养两种能力
1.1.2总体课程安排
课程大纲
实用专题
1.1.3学员要求
1.1.4小结
1.2学员听课的标准
1.3内存四区专题讲座
1.3.1数据类型本质分析
数据类型概念
数据类型的本质思考
数据类型的本质
数据类型大小
数据类型别名
数据类型的封装
数据类型总结与扩展
1.3.2变量本质分析
变量概念
变量本质
1.3.3程序的内存四区模型
内存四区的建立流程
各区元素分析
1.4函数调用模型
1.4.1基本原理
1.4.2内存四区模型和函数调用模型变量传递分析
1.4.3提示学好C语言的关键
1.4.4如何建立正确的程序运行内存布局图
1.5内存四区强化训练
1.6作业强化
训练1划出内存四区
训练2 划出内存四区
2指针知识体系搭建
2.1前言
2.2指针强化
铁律1:指针是一种数据类型
铁律2:间接赋值(*p)是指针存在的最大意义
铁律3:理解指针必须和内存四区概念相结合
铁律4:应用指针必须和函数调用相结合(指针做函数参数)
铁律5:一级指针典型用法(指针做函数参数)
铁律6:二级指针典型用法(指针做函数参数)
铁律7: 三级指针输出典型用法
铁律8:杂项,指针用法几点扩充
铁律9:一般应用禁用malloc/new
2.3接口封装设计思想引导
2.4附录
3字符串和一级指针内存模型专题
3.1字符串基本操作
字符数组初始化方法
数组法和指针法操作字符串
3.2字符串做函数参数
3.3库函数api
3.4字符串相关一级指针内存模型
3.5项目开发字符串模型
strstr-whiledowhile模型
两头堵模型
字符串反转模型
3.6一级指针(char *)易错模型分析
01char *(字符串)做函数参数出错模型分析
02越界
03不断修改指针变量的值
04你向外面传递什么
05 看图
06重复的错误何时休
3.7const专题
3.8考试强化训练
4二级指针和多级指针专题
4.1二级指针的三种内存模型
4.1.1二级指针输入和输出模型
4.1.2二级指针三种内存模型
4.1.3强化两个辅助指针变量挖字符串
思想分享:强化训练到极致
4.1.4二级指针内存模型建立
4.2数组类型和多维数组本质
4.2.1数组概念
概念
数组初始化
数组名的技术盲点
4.2.2数组类型、数组指针类型、数组指针类型变量
数组类型
数组指针类型
4.2.3多维数组本质技术推演
4.2.4多维数组做函数参数退化原因大剖析
4.2.5多维数组做函数参数技术推演
4.3指针数组的应用场景
4.4强化训练
5结构体专题
5.1大纲
5.2结构体类型定义及变量定义
5.3结构体做函数参数及结构体数组
5.4结构体在工程开发中的应用
6文件操作专题
6.1 c语言文件读写概念
文件分类
6.2 文件操作API
6.2.1文件api的分类
6.2.2标准文件的读写
6.2.3非标准文件的读写
6.2.4注意点
6.3文件操作案例-配置文件读写
6.4文件操作案例-大文件加解密
7 C接口的封装和设计专题
DLL分配的内存如何在EXE里面释放
轻松入门 实战应用 传智播客 C++学院 就业班第一阶段 C 提高课程 传智播客 C 提高讲义 传智扫地僧 1 程序内存模型 1.1 就业班引言 1.1.1 问题引出 企业需要能干活的人  C 学到什么程度可以找工作?  对于 C/C++初级开发者,怎么达到企业的用人标准  就业问题 问: 老师,有没有一个框框? 有没有一个标准啊? 我们学什么哪? C 工程开发需要什么(培养什么能力) 成熟的、商业化的信息系统在分区、分层
轻松入门 实战应用 传智播客 C++学院 就业班第一阶段 C 提高课程 信息系统的技术模型在分层
轻松入门 实战应用 传智播客 C++学院 就业班第一阶段 C 提高课程 找出对我们初学者最近的那一层(哪些能力是你入行前,必须要掌握的) C 项目开发的套路(一套接口)  //socket_client pool api 设计与实现  int sckClient_poolinit(void **handle);  int sckClient_getConnet(void *handle, void **hConnect);  int sckClient_sendData(void *hConnect, unsigned char *data, int dataLen);  int sckClient_getData(void *hConnect, unsigned char **data, int *dataLen);  int sckClient_getData_Free(void *hConnect, unsigned char *data);  int sckClient_putConnet(void *handle, void **hConnect);  int sckClient_pooldestory(void **handle); 总结:寻找到学习的标准 培养两种能力  接口的封装和设计(功能抽象和封装)  接口 api 的使用能力  接口 api 的查找能力(快速上手)
轻松入门 实战应用 传智播客 C++学院 就业班第一阶段 C 提高课程  接口 api 的实现能力  建立正确程序运行内存布局图(印象图)  内存四区模型图  函数调用模型图 1.1.2 总体课程安排 课程大纲  C 提高  C++  数据结构  总体时间 1 个月 实用专题  总:轻松入门 实战应用  形式 1:专题的形式录制 话题集中 便于初学者学习  形式 2:知识点分段录制、细致讲解,从根本上提高初学者水平  项目开发中的重要点做剖析  指针铁律 1 2 3 4 5 6 7 8 9 10===》企业用人标准 1.1.3 学员要求  资料,时间空间管理  工作经验,记录和积累  临界点  事物认知规律  挑战 *p,**p, ***p  提高课堂效率  课堂例子,当堂运行。  录制视频说明(不来,看视频)
轻松入门 实战应用 传智播客 C++学院 就业班第一阶段 C 提高课程  C/C++学习特点  Java:学习、应用、做项目  C:学习、理解、应用、做项目  多动手  不动手,永远学不会  关键点、关键时候,进行强化训练和考试 1.1.4 小结  建立信心  接口的封装和设计  指针教学,多年实践检验  心态放轻松了  分析有效时间  尊重事物认知规律、给自己一次机会 1.2 学员听课的标准 C 语言学到什么程度,就可以听懂传智播客就业班第一阶段的课程了。 有没有一个标准?  选择法或者冒泡法排序  在一个函数内排序  通过函数调用的方式排序  数组做函数参数的技术盲点和推演
轻松入门 实战应用 传智播客 C++学院 就业班第一阶段 C 提高课程 1.3 内存四区专题讲座 1.3.1 数据类型本质分析 数据类型概念  “类型”是对数据的抽象  类型相同的数据有相同的表示形式、存储格式以及相关的操作  程序中使用的所有数据都必定属于某一种数据类型 数据类型的本质思考  思考数据类型和内存有关系吗?  C/C++为什么会引入数据类型? 数据类型的本质  数据类型可理解为创建变量的模具(模子);是固定内存大小的别名。  数据类型的作用:编译器预算对象(变量)分配的内存空间大小  程序举例,如何求数据类型的大小 sizeof(int *)  请问:数据类型可以有别名吗?数据类型可以自定义吗?
轻松入门 实战应用 传智播客 C++学院 就业班第一阶段 C 提高课程 数据类型大小 int main() { int a = 10; int b[10] ; printf("int a:%d \n", sizeof(a)); printf("int a:%d \n", sizeof(int *)); printf("int b:%d \n", sizeof(b)); printf("int b:%d \n", sizeof(b[0])); printf("int b:%d \n", sizeof(*b)); printf("hello.....\n"); getchar(); return 0; } sizeof 是操作符,不是函数;sizeof 测量的实体大小为编译期间就已确定 数据类型别名  数据类型可以理解为固定大小内存块的别名,请问数据类型可以起别名吗? int main() { //Teacher t1; printf("Teacher:%d \n", sizeof(Teacher)); printf("u32:%d \n", sizeof(u32)); printf("u8:%d \n", sizeof(u8)); printf("hello.....\n"); getchar(); return 0; } 数据类型的封装  1、void 的字面意思是“无类型”,void *则为“无类型指针”,void *可以 指向任何类型的数据。  2、用法 1:数据类型的封装 int InitHardEnv(void **handle); 典型的如内存操作函数 memcpy 和 memset 的函数原型分别为
轻松入门 实战应用 传智播客 C++学院 就业班第一阶段 C 提高课程 void * memcpy(void *dest, const void *src, size_t len); void * memset ( void * buffer, int c, size_t num );  3、用法 2: void 修饰函数返回值和参数,仅表示无。 如果函数没有返回值,那么应该将其声明为 void 型 如果函数没有参数,应该声明其参数为 void int function(void) {return 1;}  4、void 指针的意义 C 语言规定只有相同类型的指针才可以相互赋值 void*指针作为左值用于“接收”任意类型的指针 void*指针作为右值赋值给其它指针时需要强制类型转换 int *p1 = NULL; char *p2 = (char *)malloc(sizoeof(char)*20);  5、不存在 void 类型的变量 C 语言没有定义 void 究竟是多大内存的别名  6、扩展阅读《void 类型详解.doc》 数据类型总结与扩展  1、数据类型本质是固定内存大小的别名;是个模具,c 语言规定:通过 数据类型定义变量。  2、数据类型大小计算(sizeof)  3、可以给已存在的数据类型起别名 typedef  4、数据类型封装概念(void 万能类型) 思考 1: C 一维数组、二维数组有数据类型吗?int array[10]。 若有,数组类型又如何表达?又如定义? 若没有,也请说明原因。 抛砖:数组类型,压死初学者的三座大山
分享到:
收藏