C语言复习和VC++6.0开发环境.ppt_第1页
C语言复习和VC++6.0开发环境.ppt_第2页
C语言复习和VC++6.0开发环境.ppt_第3页
C语言复习和VC++6.0开发环境.ppt_第4页
C语言复习和VC++6.0开发环境.ppt_第5页
已阅读5页,还剩48页未读 继续免费阅读

下载本文档

版权说明:本文档由用户提供并上传,收益归属内容提供方,若内容存在侵权,请进行举报或认领

文档简介

选择编程工具 目前流行两大语法体系 Basic语系和C语系 同一个语系下语言的基本语法是一样 两大语系如图3 3所示 C语系中 目前两大语言如日中天 C 和Java C 适宜做系统软件的开发 Java更适宜做网络应用开发 C 的开发工具是VC 6 0和C Builder6 0 Java流行的开发工具比较多 比如 IBM公司的VisualAge和WebsphereStudio Insprise公司JBuilder等等 学习Windows下编程 学习语言 选择语言和工具是第一步 而且是非常重要的一步工作 目前的编程语言那么多 有C C C Java和汇编语言等等 虽然有很多语言 只要精通一门就够了 从实用的角度来讲 C语系是较好的选择 而微软公司的VisualC 和Insprise公司 原Borland公司 的C Builder是其相应开发工具的两大主流 C语言发展的四个阶段 C语言经过不断的发展 在编程体系中可以将其分成四个阶段 1 面向过程的C语言 2 面向对象的C 语言 包括JAVA 3 SDK编程 4 MFC编程 MicrosoftFoundationClass 微软基类库 API与SDK API是英文ApplicationProgrammingInterface的缩写 意思是 应用程序接口 泛指系统为应用程序提供的一系列函数接口 在编程的时候可以直接调用 而不必知道其内部实现的过程 只知道它的原型和返回值就可以了 SDK是英文SoftwareDevelopmentKit的缩写 意思是 软件开发工具包 微软提供了许多专门的SDK开发包 比如DirectX开发包和语音识别开发包等等 类C语言的介绍 1 算法描述方法 2 语法错误与代码规范问题 3 代码调试问题 4 指针与数组5 结构6 程序与进程 1 本书的算法描述 1 类C语言的风格 2 数据元素的结构定义typedefstruct 数据元素的数据项中关键字 key 的定义EtypeKeykey 数据元素其它数据项定义 DataTypedata EType typedefintEtypeKey typedefstudentDataType 3 算法函数的描述 函数形式参数表 算法说明 函数形式参数表中 以 开头的参数即为引用参数 引用参数能被函数本身更新参数值 可以作为输出数据的 管道 取代 return 语句 参数传递的方式 传址方式和传值方式 假设某人A要给某人B 2000 A将钱存放在银行帐户 XXX 并在网上银行注册 传址方式 A直接告诉B网上银行的登陆密码和支付密码 这样A B两人拥有对同一帐户存取的权限 传值方式 假设B也在网上银行开户 Y A直接转帐 2000给B 值复制 A 主程序 X 内存变量B 子程序 Y 内存变量X Y 存放参数地址 2000 参数值 2000 X A B 2000 Y 传址方式 传值方式 X和Z代表同一内存单元 而X和Y代表不同的内存单元 voidadd int voidadd inty y 1 2 voidmain intt 0 add t t t 0 t 3 t 3 较少一次的内存分配 示例1 4 内存空间的动态分配和释放 5 输入输出语句 算法中使用的语句基本上与C 或C语言中是一致的 1 头文件 include 用时称为标准方式 系统到存放C库头文件所在的目录中寻找要包含的文件 用 时 系统先在用户当前目录中寻找要包含的文件 若找不到 再按标准方式查找 1 语法错误 变量和函数没有定义 可能是书写错误 也可能是没有把相关文件包含进来 中西文输入法的问题 的个数出现问题 如果是link过程出现问题 一般是函数定义的问题 2 语法错误与代码规范问题 只要是编译器能够识别的都是好解决的 编译出错 鼠标双击某一error信息 自动定位出错代码行 2 代码规范 TAB的使用 掌握在debug方式下设置断点的检查功能 35 程序编译成功 还需要调试吗 3 代码调试问题 35 voidmain unsignedk 1 K 0 x41414141 所有的代码是调试出来的 而不是 编 出来的 只有经过调试的代码才能保证其可用 设置调试中的断点 调试按钮 显示当前变量值 查看自定义变量的值 单步调试 调试菜单 F10 单步调试F11 进入函数内部调试Shift F11 从函数内部回到调用函数 如main Ctrl F10 运行到光标处 Shift F5 终止调试过程 是一个重要概念 可以有效地表示复杂的数据结构 能动态分配内存 能方便地使用字符串 有效而方便地使用数组 能直接处理内存地址等 这对设计系统软件是很必要的 指针的概念比较复杂 使用也比较灵活 十分小心 4 指针 new delete int parr parr newint 100 返回类型为int 类型 整数型指针 分配大小为sizeof int 100 delete parr int p p newint 返回类型为int 类型 整数型指针 分配大小为sizeof int deletep int p p newint 5 分配大小为sizeof int 5for inti 0 i 5 i p i i 16进制的表示方法 共计32位的2进制bit 存储一个字节 计算机存储结构 inta 3 int p 假设已执行p 关于 和 运算符的说明 1 p与 a相同 即变量a的地址 2 a p及变量a等价 3 p 相当于a 它与 p 不同 p 等价于 p p的值改变 不再指向a了 指针仅能进行加 减算术运算如 p n p n p p p p p n p n p1 p2等其中n是整数 p p1 p2均为指针 inti j j 1 i j i 1 j 2 inti j j 1 i j i 2 j 2 施行加法 减法运算时 指针向地址增大 减小的方向移动 移动长度取决于指针的基类型 由计算机决定 typedefstruct intcore charv stdudent stdudent p p newstdudent 3 p core 4 p v a p p core 4 p v b p p core 4 p v c 指针移动 数组 chara 5 for inti 0 i 5 i a i a i 数组 inta 5 int p p 含义 把数组的首地址赋给指针变量p 如果指针变量p已指向数组中的一个元素 则p 1指向同一个数组中的下一个元素 而不是简单地加1 如果p的初值为 a 0 则 p i a i a i 即指向a数组的第i个元素 指向数组的指针变量也可以带下标 如p i 与 p i 等价引用数组元素时 可以用 a i a i 或 p i 利用指针操作数组 示例2 声明结构体类型的同时定义变量typedefstructArgon charname 3 intmass PositionpositionNow Argon next Argon 5 结构 15 typedefstruct intx y z Position 嵌套结构 自引用结构 组成结构的成员项可以是任何数据类型 另一个结构类型的变量指向另一个结构类型的结构指针可以是指向本结构类型的一个结构指针 它们的元素 成员都必须存放在一片连续的存储空间中 通过存取结构变量的成员来访问结构变量 结构中的成员的数据类型可以不相同 而数组中的元素都是有相同的数据类型 自引用结构多用于链表 而对于数组 编译程序必须给分配存放其全部元素的存储空间 一些特点 嵌套结构变量的访问 Argon PositionNow x对结构体变量的成员可以像普通变量一样进行各种运算 嵌套的结构指针的引用Atom p p q x或 p q x StructureAtom Position q Argon p Position q p newArgon q newPosition q x 1 q y 2 q z 3 p positionNow x q x p positionNow y q y p positionNow z q z p name 0 a p name 1 b p mass 4 p next NULL 如果没有这一行可以吗 结尾会出现乱码 0 示例3 6 程序与进程 程序的源代码称为程序源代码 源代码编译后的二进制可执行文件称为程序 程序被运行起来后内存中和他相关的内存资源和CPU资源的总和称为进程 程序空间其实指的是进程中内存布局和内存中的数据 再通俗点就是程序被运行起来时其内存空间的布局 一个程序被编译完成后其运行时内部的内存空间布局就已经确定 intadd intx inty returnx y intmain void intresult add 129 127 printf nresult xi n result return0 x55 x8b xec x83 xec x40 x53 x56 x57 x8d x7d xc0 xb9 x10 x00 x00 x00 xb8 xcc xcc xcc xcc xf3 xab x8b x45 x08 x03 x45 x0c x5f x5e x5b x8b xe5 x5d xc3 typedefint PF int int intmain void unsignedcharbuff x55 x8b xec x83 xec x40 x53 x56 x57 x8d x7d xc0 xb9 x10 x00 x00 x00 xb8 xcc xcc xcc xcc xf3 xab x8b x45 x08 x03 x45 x0c x5f x5e x5b x8b xe5 x5d xc3 PFpf pf PF 1 结构体 2 常量或全局变量 a 3 自定义函数申明及实现 进程运行 主程序mian 1 定义局部变量b 2 函数1 调用3 函数2 调用 4 结束 函数1 1 定义局部变量c 2 函数调用 3 返回其调用 或父 函数 函数2 通过参数的传递及结果返回 调用者和被调用建立联系 1 在mian 能直接访问或修改变量a b c 2 函数1 能直接访问或修改变量a b c 共享空间 局部空间 局部空间 Malloc new free delete 函数声明 函数原型 void malloc intsize 说明 malloc向系统申请分配指定size个字节的内存空间 返回类型是void 类型 void 表示未确定类型的指针 C C 规定 void 类型可以强制转换为任何其它类型的指针 从函数声明上可以看出 malloc和new至少有两个不同 new返回指定类型的指针 并且可以自动计算所需要大小 比如 int p p newint 返回类型为int 类型 整数型指针 分配大小为sizeof int deletep int parr parr newint 100 返回类型为int 类型 整数型指针 分配大小为sizeof int 100 delete parr 而malloc则必须由我们计算要字节数 并且在返回后强行转换为实际类型的指针 int p p int malloc sizeof int free p 第一 malloc函数返回的是void 类型 如果你写成 p malloc sizeof int 则程序无法通过编译 报错 不能将void 赋值给int 类型变量 所以必须通过 int 来将强制转换 33 第二 函数的实参为sizeof int 用于指明一个整型数据需要的大小 如果你写成 int p int malloc 1 代码也能通过编译 但事实上只分配了1个字节大小的内存空间 当你往里头存入一个整数 就会有3个字节无家可归 而直接 住进邻居家 造成的结果是后面的内存中原有数据内容全部被清空 malloc也可以达到new 的效果 申请出一段连续的内存 方法无非是指定你所需要内存大小 比如想分配100个int类型的空间 int p int malloc sizeof int

温馨提示

  • 1. 本站所有资源如无特殊说明,都需要本地电脑安装OFFICE2007和PDF阅读器。图纸软件为CAD,CAXA,PROE,UG,SolidWorks等.压缩文件请下载最新的WinRAR软件解压。
  • 2. 本站的文档不包含任何第三方提供的附件图纸等,如果需要附件,请联系上传者。文件的所有权益归上传用户所有。
  • 3. 本站RAR压缩包中若带图纸,网页内容里面会有图纸预览,若没有图纸预览就没有图纸。
  • 4. 未经权益所有人同意不得将文件中的内容挪作商业或盈利用途。
  • 5. 人人文库网仅提供信息存储空间,仅对用户上传内容的表现方式做保护处理,对用户上传分享的文档内容本身不做任何修改或编辑,并不能对任何下载内容负责。
  • 6. 下载文件中如有侵权或不适当内容,请与我们联系,我们立即纠正。
  • 7. 本站不保证下载资源的准确性、安全性和完整性, 同时也不承担用户因使用这些下载资源对自己和他人造成任何形式的伤害或损失。

评论

0/150

提交评论