使用VC++6.0调试程序

上传人:ldj****22 文档编号:48516210 上传时间:2018-07-16 格式:PPT 页数:54 大小:635.50KB
返回 下载 相关 举报
使用VC++6.0调试程序_第1页
第1页 / 共54页
使用VC++6.0调试程序_第2页
第2页 / 共54页
使用VC++6.0调试程序_第3页
第3页 / 共54页
使用VC++6.0调试程序_第4页
第4页 / 共54页
使用VC++6.0调试程序_第5页
第5页 / 共54页
点击查看更多>>
资源描述

《使用VC++6.0调试程序》由会员分享,可在线阅读,更多相关《使用VC++6.0调试程序(54页珍藏版)》请在金锄头文库上搜索。

1、使用VC+6.0调试程序调试程序v调试运行v单步跟踪v单步跳进跟踪v观察自动变量v观察其他变量v停止调试v1:打开jiecheng项目(双击jiecheng.dsw文 件)v2:build该项目,确定程序可以运行v3:调试运行阶乘程序v4:设置断点v5:再次调试运行程序v6:使用单步执行程序到结束1:打开jiecheng项目2:Build该项目,确定程序可以运 行3:调试运行阶乘程序Go4:设置断点v将鼠标停留在程序的第8行,在第8行的任意 地方单击鼠标左键(第8行即“i = i*4;”)v在工具栏上选择 按钮,为第8行设置断点 ,以便让程序在此处暂停运行5:再次调试运行阶乘程序v注意观察,现

2、在调试运行程序会如何?Go5:再次调试运行阶乘程序(续)程序暂停之处调试(Debug)工具 : 控制程序前进步伐 查看程序当前状态6:使用单步执行到程序结束v设置断点以后,调试运行程序时,程序开始 执行,并且运行到断点处暂停下来,此时我们 有机会观察程序的运行情况,并且诊断程序目 前的状态是否如我们所预期的那样。v不过我们先不着急观察程序的状态,而是来 看看如何控制程序的运行,以便在我们需要的 时候让程序暂停下来,并且以我们需要的方式 走走停停!6:使用单步执行到程序结束v程序停下来了,如何让程序从暂停的地方继 续向前执行?v方法是使用单步执行手段(Step Over)让 程序向前走一步停止调

3、试停止调试并重新启动调试单步执行 当前位置熟悉调试工具栏和菜单(只在调试 运行时出现)对比调试运行时出现的 调试菜单“Debug”和调试 工具栏,根据图标查找 对应项观察自动变量自动变量观察变量的值及其随程序运行时 的变化情况v设置断点,调试运行程序,此时程序暂停在 断点处等待v选择Debug菜单,找到 最后一项“Quick Watch” 并点击输入想要观察的变量变量名变量的值点击Add Watch点击Add watch,看到如下画面调试观察每一步骤变量i的值v点击单步执行按钮或者菜单,程序则向前单 独运行一个步骤v每向前执行一步,就会暂停下来,这样我们 就有充足的时间观察所关心的变量名称v观

4、察变量i的值的情况注意在调试过程中v断点不能设置在空白行上面v添加断点和删除断点的方法一样v一个程序中可以设置多个断点v按下F5键可以让程序从当前位置向前执行, 直到遇见下一个断点或者程序结束相关C语言基础知识指针: 结构体:指针新建Visual C+程序四、利用已有的程序编写新程序无论是控制台程序,或者是Windows窗口程序,Visual C+都会要求有对 应的项目文件。而且在大多数情况下,C程序的基本框架都是一致的,例 如:都有主函数等等。所以在编写一个新的程序时,可以利用以前编写过 的程序,其操作方法有两种。(1)程序复用操作将已有的程序复用到新程序上的方法很简单,就是将程序内容通过“

5、复制 粘贴”实现。(2)项目复用操作打开已有的项目文件,将原来的文件删除,利用项目管理增加新程序文件 或资源元素等。 新建Visual C+程序五、项目管理无论项目是否建立,只要开始程序的编译、链接、运行或调试过程, Visual C+就会按项目管理方式进行控制。例如:当使用文件新建方式建立一个源程序文件后,只要开始编译则 Visual C+会自动提示创建项目。 新建Visual C+程序地址和指针的概念一、指针概述:1、“例如:int i, j, *pi, *pj;float x, y, *p1, *p2;指针变量的赋值:使得指针变量指向变量指针变量名如: pi= pj= p1= p2= 注

6、意:指针变量只能存放指针(地址),且只能是相同类型变量的地址。 例如,指针变量pi、pj,只能接收int型、p1, p2只能接收float型的地址 ,否则出错。结构体指针变量的引用在程序中,可以用:*指针变量名 代替其所指变量。如若:int i, *p;p=则 i=5; 与*p=5; 的作用相同,即可用*p代替i,这里*号称为指 针运算符(或称为间接访问运算符)指针变量作为函数参数实参:变量地址或已赋值的指针变量,形参:指针变量功能:地址传送方式,会将改变后的值带回。例10.3 通过函数调用实现例10.2的功能。 swap(int *p1, int *p2) int temp; temp=*p

7、1; *p1=*p2; *p2=temp; main() int a, b, *pointer1,*pointer2; scanf(“%d%d“, pointer1= pointer2= if(a void main() int max(int,int); int min(int,int); int add(int,int); int process(int, int, int (*fun)(); int a,b; printf(“enter a and b:“); scanf(“%d%d“, printf(“nmax=“); process(a,b,max); printf(“nmin=“)

8、; process(a,b,min); printf(“nsum=“); process(a,b,add); max(int x, int y)return xy?x:y;min(int x, int y)return xy?y:x;add(int x, int y)return x+y;process(int x, int y, int (*fun)(int,int) /*fun是一个指向函数 的指针,该函数是一个有两个整型参数的返回整型值的函数*/int result;result=(*fun)(x,y);printf(“%dn“,result);返回指针值的函数一个函数可以返回一个int

9、型、float型、 char型的数据,也可以返回一个指针类型的数 据。 返回指针值的函数(简称指针函数)的定 义格式如下:函数类型 *函数名(形参表列)例如:int *a(int x,int y);该函数的函数名为a,返回的是一个整型的指针 。指针数组指针数组的概念数组的每个元素都是一个指针数据。指针数 组比较适合用于指向多个字符串,使字符串处理 更加方便、灵活。数据类型 *数组名元素个数例如: int *p4; char *string10;p指向数组a易混淆的问题v*p+,*p(+),*(+p),(*p)v设P指向a数组中的第i个元素:*(p-)=ai-;*(-p)=a-i;*(+p)=a

10、+i.结 构 体例:描述一个学生的姓名、学号、性别、年龄。每个学生都有这样的属性,它们构成一个描述学生具体情 况的一个整体。而每个属性又是一个基本的类型,本例中 可分别用字符数组、长整型、字符型、和整型来描述。一、结构体类型的定义结构体概念的引入数据的描述: 基本类型:整型、实型、字符型。 数组:属于同一种类型的元素的集合。 有时,需要用不同的数据类型来描述一个事物的各方面属性,故 此,C语言引入了结构体的概念。struct 结构体类型名 类型标识符 成员名1;类型标识符 成员名2;类型标识符 成员名n;;结构体类型的定义如:struct student char name10;long id

11、;char gender;int age;注意: struct student 应作为一个类型整体,name10、id、gender、age都是其成员。struct及花括号后的“;”不能省。定义结构体类型, 描述下列数据 struct student int no; /*学号*/char name10; /*姓名*/char sex; /*性别*/int age; /*年龄*/float score10; /*成绩*/;结构体类型的举例(1) 学生情况: 包含学生的学号、 姓名、 性别、 年龄、10门课程成绩:结构体类型可以嵌套定义 即一个结构体类型中的某些成员又是其他结构体类型注意例如,对已

12、定义的结构体类型struct student ,可以定义结构体 变量: struct student zhang ,stu1; 二、结构体变量结构体变量的定义1.先定义结构体类型, 再定义结构体变量格式: struct 结构体名 结构体变量名表;三种方法:2.在定义结构体类型的同时定义变量例如:struct student char name10;char sex;int age;float score; stu1,stu2;格式: struct 结构体类型名 类型标识符 成员名1;类型标识符 成员名2;类型标识符 成员名n; 变量名表;3. 用匿名形式直接定义结构体类型变量(不出现结构体名)

13、例如:struct char name10; char sex;int age;float score; stu1,stu2;格式: struct 类型标示符 成员名1;类型标示符 成员名2;类型标示符 成员名n; 变量名表;(1)类型与变量是不同的概念,不要混同。对结构体变量来说,在定 义时一般先定义一个结构体类型,然后定义变量为该类型。只能对变量 赋值、存取或运算,而不能对一个类型赋值、存取或运算。在编译时, 对类型是不分配存储空间的,只对变量分配存储空间。 (2)对结构体中的成员,可以单独使用,它的作用相当于普通变量。 (3)成员也可以是一个结构体变量。 (4)成员名可与程序中的变量同名

14、,两者不代表同一对象。 结构体的说明例。定义结构体变量stu1: struct student stu1; stu1.age=20;scanf(“%f“,stu1.age 表示引用结构体变量stu1中的age成员,因该成员的 类型为int型,所以可以对它执行任何int型变量可以执行的运 算。结构体变量的使用结构体变量一般不整体引用,而是引用其成员变量。成员变量引用格式结构体变量名.成员名其中的圆点运算符称为成员运算符,它的运算级别是最高的。(1) 结构体类型变量的各成员(分量)必须单独引用,成员运算符 “”具有最高优先级。 (2) 不允许对结构体变量进行整体的输入输出如:scanf(“%s%c

15、%d%f”, (3) 如果结构体变量类型相同,可以互相赋值。stu1=stu2; (4) 严格区分类型与变量的概念。 (5) 如果结构体成员本身又是结构体类型的,则可继续使用成员运算符取结构体成员的结构体成员,逐级向下,引用最低一级的成员。程序只能对最低一级的成员进行运算。例如,对stu1某些成员的访问:stu1.birthday.day=23;stu1.birthday.month=8;stu1.birthday.year=1985; 说明结构体变量的初始化结构体变量可以在定义时初始化。格式struct 结构体名 成员表; 结构体变量=初始化数据表;例struct student char name10;char sex;int age;float score;stu1,stu2=“Wangwu”,m,20,88. 5;一个结构体变量的指针就是该变量所占据的内存段的起始 地址。可以定义一个指针变量,用来指向一个结构体变量,此 时该指针变量的值是结构体变量的起始地址 。四、结构体类型指针例如: struct student *pstu, stu; p

展开阅读全文
相关资源
正为您匹配相似的精品文档
相关搜索

最新文档


当前位置:首页 > 行业资料 > 其它行业文档

电脑版 |金锄头文库版权所有
经营许可证:蜀ICP备13022795号 | 川公网安备 51140202000112号