欢迎阅读
传智播客C提高讲义
传智扫地僧
1程序内存模型 1.1就业班引言 1.1.1问题引出
企业需要能干活的人
? 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的查找能力(快速上手) ? 接口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++学习特点 ? Java:学习、应用、做项目 ? C:学习、理解、应用、做项目 ? 多动手 ? 不动手,永远学不会 ? 关键点、关键时候,进行强化训练和考试
1.1.4小结 ? 建立信心
? 接口的封装和设计 ? 指针教学,多年实践检验
? 心态放轻松了
? 分析有效时间
欢迎阅读
? ? ? ? 欢迎阅读
? 尊重事物认知规律、给自己一次机会
1.2学员听课的标准
C语言学到什么程度,就可以听懂传智播客就业班第一阶段的课程了。 有没有一个标准?
? 选择法或者冒泡法排序
? 在一个函数内排序 ? 通过函数调用的方式排序
? 数组做函数参数的技术盲点和推演
1.3内存四区专题讲座 1.3.1数据类型本质分析 数据类型概念 ? “类型”是对数据的抽象 ? 类型相同的数据有相同的表示形式、存储格式以及相关的操作 ? 程序中使用的所有数据都必定属于某一种数据类型 数据类型的本质思考 ? 思考数据类型和内存有关系吗? ? C/C++为什么会引入数据类型? 数据类型的本质 ? 数据类型可理解为创建变量的模具(模子);是固定内存大小的别名。 ? 数据类型的作用:编译器预算对象(变量)分配的内存空间大小 ? 程序举例,如何求数据类型的大小sizeof(int *) ? 请问:数据类型可以有别名吗?数据类型可以自定义吗? 数据类型大小 int main() { int a = 10; int b[10] ; printf(\printf(\printf(\printf(\printf(\printf(\getchar(); return 0; } sizeof是操作符,不是函数;sizeof测量的实体大小为编译期间就已确定 数据类型别名 欢迎阅读
欢迎阅读
? 数据类型可以理解为固定大小内存块的别名,请问数据类型可以起别名吗? int main() { //Teacher t1; printf(\ printf(\ printf(\ printf(\ getchar(); return 0; } 数据类型的封装 ? 1、void的字面意思是“无类型”,void *则为“无类型指针”,void *可以指向任何类型的数据。 ? 2、用法1:数据类型的封装
int InitHardEnv(void **handle); 典型的如内存操作函数memcpy和memset的函数原型分别为
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]。 若有,数组类型又如何表达?又如定义? 若没有,也请说明原因。
抛砖:数组类型,压死初学者的三座大山 1、数组类型 2、数组指针 3、数组类型和数组指针的关系 思考2:
C语言中,函数是可以看做一种数据类型吗? a)若是,请说明原因 并进一步思考:函数这种数据类型,能再重定义吗? b)若不是,也请说明原因。 抛砖:
1.3.2变量本质分析 变量概念 ? 概念:既能读又能写的内存对象,称为变量;若一旦初始化后不能修改的对象则称为常量。 ? 变量定义形式: 类型 标识符, 标识符, … , 标识符 ; ? 例如: int x ; int wordCut , Radius , Height ; double FlightTime , Mileage , Speed ; 变量本质 1、程序通过变量来申请和命名内存空间 int a = 0 2、通过变量名访问内存空间
(一段连续)内存空间的别名(是一个门牌号) 3、 修改变量有几种方法?
1、直接
2、间接。内存有地址编号,拿到地址编号也可以修改内存;于是横空出世了!(编程案例) 3、内存空间可以再取给别名吗? 欢迎阅读