C语言复习和VC6.0开发环境.ppt_第1页
C语言复习和VC6.0开发环境.ppt_第2页
C语言复习和VC6.0开发环境.ppt_第3页
C语言复习和VC6.0开发环境.ppt_第4页
C语言复习和VC6.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)算法函数的描述,(函数形式参数表)/算法说明函数形式参数表中,以,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=newint100;/返回类型为int*类型(整数型指针),分配大小为sizeof(int)*100;deleteparr;,int*p;p=newint;/返回类型为int*类型(整数型指针),分配大小为sizeof(int);deletep;,int*p;p=newint5;/分配大小为sizeof(int)*5for(inti=0;icore=4;p-v=a;p+;p-core=4;p-v=b;p+;p-core=4;p-v=c;,指针移动,数组,chara5;for(inti=0;ix=1;q-y=2;q-z=3;p-positionNow.x=q-x;p-positionNow.y=q-y;p-positionNow.z=q-z;p-name0=a;p-name1=b;p-mass=4;p-next=NULL;,如果没有这一行可以吗?,结尾会出现乱码(0),示例3,6.程序与进程,程序的源代码称为程序源代码,源代码编译后的二进制可执行文件称为程序。程序被运行起来后内存中和他相关的内存资源和CPU资源的总和称为进程。程序空间其实指的是进程中内存布局和内存中的数据。再通俗点就是程序被运行起来时其内存空间的布局。一个程序被编译完成后其运行时内部的内存空间布局就已经确定,intadd(intx,inty)returnx+y;intmain(void)intresult=add(129,127);printf(nresult=xin,result);return0;,x55x8bxecx83xecx40x53x56x57x8dx7dxc0xb9x10x00x00x00xb8xccxccxccxccxf3xabx8bx45x08x03x45x0cx5fx5ex5bx8bxe5x5dxc3,typedefint(*PF)(int,int);intmain(void)unsignedcharbuff=x55x8bxecx83xecx40x53x56x57x8dx7dxc0xb9x10x00x00x00xb8xccxccxccxccxf3xabx8bx45x08x03x45x0cx5fx5ex5bx8bxe5x5dxc3;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=newint100;/返回类型为int*类型(整数型指针),分配大小为sizeof(int)*100;deleteparr;而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)*100);/分配可以放得下100个整数的内存空间。,另外有一点不能直接看出的区别是,malloc只管分配内存,并不能对所得的内存进行初始化,所以

温馨提示

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

评论

0/150

提交评论