




版权说明:本文档由用户提供并上传,收益归属内容提供方,若内容存在侵权,请进行举报或认领
文档简介
1、使用使用VC+6.0VC+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:再次调试运行阶乘程
2、序v注意观察,现在调试运行程序会如何?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观察变量i的值的情况注意在调试
4、过程中v断点不能设置在空白行上面v添加断点和删除断点的方法一样v一个程序中可以设置多个断点v按下F5键可以让程序从当前位置向前执行,直到遇见下一个断点或者程序结束相关C语言基础知识指针:结构体:指针新建新建Visual C+程序程序四、利用已有的程序编写新程序四、利用已有的程序编写新程序无论是控制台程序,或者是无论是控制台程序,或者是Windows窗口程序,窗口程序,Visual C+都会要求有对都会要求有对应的项目文件。而且在大多数情况下,应的项目文件。而且在大多数情况下,C程序的基本框架都是一致的,例程序的基本框架都是一致的,例如:都有主函数等等。所以在编写一个新的程序时,可以利用以前编写
5、过如:都有主函数等等。所以在编写一个新的程序时,可以利用以前编写过的程序,其操作方法有两种。的程序,其操作方法有两种。(1)程序复用操作)程序复用操作将已有的程序复用到新程序上的方法很简单,就是将程序内容通过将已有的程序复用到新程序上的方法很简单,就是将程序内容通过“复制复制粘贴粘贴”实现。实现。(2)项目复用操作)项目复用操作打开已有的项目文件,将原来的文件删除,利用项目管理增加新程序文件打开已有的项目文件,将原来的文件删除,利用项目管理增加新程序文件或资源元素等。或资源元素等。 新建新建Visual C+程序程序五、项目管理五、项目管理无论项目是否建立,只要开始程序的编译、链接、运行或调试
6、过程,无论项目是否建立,只要开始程序的编译、链接、运行或调试过程,Visual C+就会按项目管理方式进行控制。就会按项目管理方式进行控制。例如:当使用文件新建方式建立一个源程序文件后,只要开始编译则例如:当使用文件新建方式建立一个源程序文件后,只要开始编译则Visual C+会自动提示创建项目。会自动提示创建项目。 新建新建Visual C+程序程序地址和指针的概念地址和指针的概念一、指针概述:一、指针概述:1 1、“&” &” :地址运算符:地址运算符2. “2. “* *” ” :指针运算符,取其指向的:指针运算符,取其指向的内容内容: exp:exp: &a:
7、&a: 变量变量a a的地址:的地址: * *p: p: 变量变量p p的内容;的内容; 注:注: “ “&” &” 不能施加在常数,常量和表达式上;不能施加在常数,常量和表达式上;二、指针变量:二、指针变量: 存放某种变量地址的变量称为指针存放某种变量地址的变量称为指针变量。变量。 1035.ab20102012p2010q2012因此,在因此,在C语言中,将地语言中,将地址形象化地称为址形象化地称为指针指针定义一个指针变量定义一个指针变量指针变量的定义一般形式为:指针变量的定义一般形式为:基类型基类型*指针变量名指针变量名;例如:例如:int i, j, int i
8、, j, * *pi, pi, * *pj;pj; float x, y, float x, y, * *p1, p1, * *p2;p2;指针变量的赋值:使得指针变量指向变量指针变量的赋值:使得指针变量指向变量指针变量名指针变量名& &变量名变量名; ;如:如: pi=&i; pj=&j; p1=&y; p2=&x;pi=&i; pj=&j; p1=&y; p2=&x;注意:指针变量只能存放指针(地址),且只能是相同类型变量的地址。注意:指针变量只能存放指针(地址),且只能是相同类型变量的地址。例如,指针变量例如
9、,指针变量pipi、pjpj,只能接收,只能接收intint型、型、p1, p2p1, p2只能接收只能接收floatfloat型的地址,型的地址,否则出错否则出错。结构体指针变量的引用在程序中,可以用:在程序中,可以用:*指针变量名代替其所指变量。指针变量名代替其所指变量。如若如若:int i, *p; p=&i;则则 i=5;与与*p=5;的作用相同,即可用的作用相同,即可用*p代替代替i,这里这里*号称为指号称为指针运算符(或称为间接访问运算符)针运算符(或称为间接访问运算符)指针变量作为函数参数实参:变量地址或已赋值的指针变量,形参:指针变量实参:变量地址或已赋值的指针变量,形
10、参:指针变量功能:地址传送方式,会将改变后的值带回。功能:地址传送方式,会将改变后的值带回。例例10.3通过函数调用实现例通过函数调用实现例10.2的功能。的功能。swap(int *p1, int *p2)int temp;temp=*p1; *p1=*p2; *p2=temp;main()int a, b, *pointer1,*pointer2;scanf(%d%d,&a,&b);pointer1=&a; pointer2=&b;if(ab) swap(&a,&b);printf(n%d,%d,a,b);数组与指针1.1.概念概念数组的指针
11、数组的指针数组在内存中的起始地址,用数组在内存中的起始地址,用数组名表示数组名表示2.2.指向数组的指针变量指向数组的指针变量-赋于数组名的指针变赋于数组名的指针变量量例如,例如,int a 10, int a 10, * *p=a (p=a (或或* *p=&a0);p=&a0);或者:或者: int a 10, int a 10, * *p;p; p pa;a;3.3.通过指针引用数组元素通过指针引用数组元素如果有如果有“int a 10,int a 10,* *p=a;” p=a;” ,则:,则:(1 1)p+i=a+i=&aip+i=a+i=&ai。 (
12、2 2)* *(p+i)=(p+i)=* *(a+i)=ai(a+i)=ai。(3 3)pipi* *(p+i)(p+i)aiai。注意注意:p+1p+1指向数组的下一个元素,而不是简单指向数组的下一个元素,而不是简单地 使 指 针 变 量地 使 指 针 变 量 p p 的 值的 值 + 1+ 1 。 其 实 际 变 化 为。 其 实 际 变 化 为p+1p+1* *size(sizesize(size为一个元素占用的字节数)。为一个元素占用的字节数)。例如,假设指针变量例如,假设指针变量p p的当前值为的当前值为30003000,则,则p+1p+1为为3000+13000+1* *2=300
13、22=3002,而不是,而不是30013001用数组名作为函数参数用数组名作为函数参数形参:数组或指针变量形参:数组或指针变量实参:数组名或指向数组的指针变量实参:数组名或指向数组的指针变量传递方式:地址传送方式传递方式:地址传送方式作用:若函数中对数组作了修改,则调用作用:若函数中对数组作了修改,则调用函数中的数组也会作同样的修改函数中的数组也会作同样的修改指向函数的指针指向函数的指针1.1.函数指针的概念函数指针的概念一个函数在编译时,被分配了一个入口地址,一个函数在编译时,被分配了一个入口地址,这个地址就称为该函数的指针。这个地址就称为该函数的指针。可以用一个指针变量指向一个函数,然后通
14、过可以用一个指针变量指向一个函数,然后通过该指针变量调用此函数。该指针变量调用此函数。 2.2.指向函数的指针变量指向函数的指针变量 (1 1)定义格式)定义格式 函数类型函数类型 ( (* *指针变量指针变量)( )( ); 注意:注意:“* *指针变量指针变量”外的括号不能缺,否则外的括号不能缺,否则成了返回指针值的函数。成了返回指针值的函数。 例如,例如,int (int (* *fp)(); /fp)(); /* * fp fp为指向为指向intint函数的指针变量函数的指针变量* */ /(2 2)赋值)赋值 函数名代表该函数的入口地址。因此,可函数名代表该函数的入口地址。因此,可用
15、函数名给指向函数的指针变量赋值。用函数名给指向函数的指针变量赋值。 指向函数的指针变量指向函数的指针变量&函数名函数名; ; 注意:函数名后不能带括号和参数;函注意:函数名后不能带括号和参数;函数名前的数名前的“&”&”符号是可选的。符号是可选的。(3)调用格式调用格式 (*函数指针变量函数指针变量)(实参表实参表)3.指向函数的指针变量作函数参数指向函数的指针变量作函数参数 指向函数的指针变量的常用用途之一,就是将函数指针作指向函数的指针变量的常用用途之一,就是将函数指针作参数,传递到其它函数。参数,传递到其它函数。 注意:对指向函数的指针变量,诸如注意:对指向函数的
16、指针变量,诸如p+i、p+/p-等运算是等运算是没有意义的。没有意义的。例例10.24 设有一个函数设有一个函数process,在调用它时,每次实现不同的功,在调用它时,每次实现不同的功能。输入能。输入a和和b两个数,第一次调用时找出两个数,第一次调用时找出a与与b中的大者,第中的大者,第 二次找出小者,第三次求和。二次找出小者,第三次求和。#includevoid 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
17、and b:);scanf(%d%d,&a,&b);printf(nmax=);process(a,b,max);printf(nmin=);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是一个指向函数是一个指向函数的指针,该函数是一个有两个整型参数的返回整型
18、值的函数的指针,该函数是一个有两个整型参数的返回整型值的函数*/int result;result=(*fun)(x,y);printf(%dn,result);返回指针值的函数返回指针值的函数一个函数可以返回一个一个函数可以返回一个intint型、型、floatfloat型、型、charchar型的数据,也可以返回一个指针类型的数型的数据,也可以返回一个指针类型的数据。据。 返回指针值的函数(简称指针函数)的定返回指针值的函数(简称指针函数)的定义格式如下:义格式如下: 函数类型函数类型 * *函数名函数名( (形参表列形参表列) )例如:例如:int int * *a(int x,int
19、y);a(int x,int y);该函数的函数名为该函数的函数名为a a,返回的是一个整型的指针。,返回的是一个整型的指针。指针数组指针数组指针数组的概念指针数组的概念 数组的每个元素都是一个指针数据。指针数数组的每个元素都是一个指针数据。指针数组比较适合用于指向多个字符串,使字符串处理组比较适合用于指向多个字符串,使字符串处理更加方便、灵活。更加方便、灵活。 数据类型数据类型 * *数组名数组名 元素个数元素个数 例如:例如: int int * *p4; char p4; char * *string10;string10;p指向数组a易混淆的问题v*p+,*p(+),*(+p),(*p
20、)v设P指向a数组中的第i个元素: *(p-)=ai-; *(-p)=a-i; *(+p)=a+i.结结 构构 体体例:例:描述一个学生的姓名、学号、性别、年龄。描述一个学生的姓名、学号、性别、年龄。每个学生都有这样的属性,它们构成一个描述学生具体情每个学生都有这样的属性,它们构成一个描述学生具体情况的一个整体。而每个属性又是一个基本的类型,本例中况的一个整体。而每个属性又是一个基本的类型,本例中可分别用字符数组、长整型、字符型、和整型来描述。可分别用字符数组、长整型、字符型、和整型来描述。一、结构体类型的定义一、结构体类型的定义结构体概念的引入结构体概念的引入数据的描述:数据的描述:基本类型
21、基本类型:整型、实型、字符型。:整型、实型、字符型。数组数组:属于同一种类型的元素的集合。:属于同一种类型的元素的集合。有时,需要用不同的数据类型来描述一个事物的各方面属性,有时,需要用不同的数据类型来描述一个事物的各方面属性,故此,故此,C语言引入了语言引入了结构体结构体的概念。的概念。struct struct 结构体类型名结构体类型名 类型标识符类型标识符 成员名成员名1 1; 类型标识符类型标识符 成员名成员名2 2; 类型标识符类型标识符 成员名成员名n n;;结构体类型的定义结构体类型的定义如:如:struct student struct student char name10;
22、 char name10; long id; long id; char gender; char gender; int age; int age; 注意:注意: struct student struct student 应作为一个类型整体,应作为一个类型整体, name10name10、idid、gendergender、ageage都是其成员。都是其成员。 structstruct及花括号后的及花括号后的“;”不能省。不能省。定义结构体类型,定义结构体类型, 描述下列数据描述下列数据 struct studentstruct student int no int no; / /* *学
23、号学号* */ / char namechar name1010; / /* *姓名姓名* */ / char sexchar sex; / /* *性别性别* */ / int ageint age; / /* *年龄年龄* */ / float score10float score10; / /* *成绩成绩* */ / ;结构体类型的举例结构体类型的举例(1) (1) 学生情况学生情况: : 包含学生的学号、包含学生的学号、 姓名、姓名、 性别、性别、 年龄、年龄、1010门课程成绩:门课程成绩:结构体类型可以嵌套定义结构体类型可以嵌套定义 即一个结构体类型中的某些成员又是其他结构体类型
24、即一个结构体类型中的某些成员又是其他结构体类型注意注意例如,对已定义的结构体类型例如,对已定义的结构体类型struct student struct student ,可以定义结构体,可以定义结构体变量:变量: struct student zhang ,stu1struct student zhang ,stu1; 二、结构体变量二、结构体变量结构体变量的定义结构体变量的定义1.1.先定义结构体类型,先定义结构体类型, 再定义结构体变量再定义结构体变量格式:格式: struct struct 结构体名结构体名 结构体变量名表;结构体变量名表;三种方法:三种方法:2.2.在定义结构体类型的同时
25、定义变量在定义结构体类型的同时定义变量例如:例如:struct studentstruct student char name10; char name10; char sex; char sex; int age; int age; float score; float score; stu1,stu2; stu1,stu2;格式:格式: struct struct 结构体类型名结构体类型名 类型标识符类型标识符 成员名成员名1 1; 类型标识符类型标识符 成员名成员名2 2; 类型标识符类型标识符 成员名成员名n n; 变量名表变量名表; ;3. 3. 用匿名形式直接定义结构体类型变量(不
26、出现结构体名)用匿名形式直接定义结构体类型变量(不出现结构体名)例如:例如:structstruct char name10; char name10; char sex; char sex; int age; int age; float score; float score; stu1,stu2; stu1,stu2;格式:格式:structstruct 类型标示符类型标示符 成员名成员名1 1; 类型标示符类型标示符 成员名成员名2 2; 类型标示符类型标示符 成员名成员名n n; 变量名表变量名表; ;(1 1)类型与变量是不同的概念,不要混同。对结构体变量来说,在定)类型与变量是不同
27、的概念,不要混同。对结构体变量来说,在定义时一般先定义一个结构体类型,然后定义变量为该类型。只能对变量义时一般先定义一个结构体类型,然后定义变量为该类型。只能对变量赋值、存取或运算,而不能对一个类型赋值、存取或运算。在编译时,赋值、存取或运算,而不能对一个类型赋值、存取或运算。在编译时,对类型是不分配存储空间的,只对变量分配存储空间。对类型是不分配存储空间的,只对变量分配存储空间。(2 2)对结构体中的成员,可以单独使用,它的作用相当于普通变量。)对结构体中的成员,可以单独使用,它的作用相当于普通变量。(3 3)成员也可以是一个结构体变量。)成员也可以是一个结构体变量。(4 4)成员名可与程序
28、中的变量同名,两者不代表同一对象。)成员名可与程序中的变量同名,两者不代表同一对象。 结构体的说明结构体的说明例。定义结构体变量例。定义结构体变量stu1: stu1: struct student stu1; struct student stu1; stu1.age=20; stu1.age=20; scanf(%f,&stu1.score); scanf(%f,&stu1.score);stu1.age stu1.age 表示引用结构体变量表示引用结构体变量stu1stu1中的中的ageage成员,因该成员的成员,因该成员的类型为类型为intint型,所以可以对它执行任何
29、型,所以可以对它执行任何intint型变量可以执行的运型变量可以执行的运算。算。结构体变量的使用结构体变量的使用结构体变量一般不整体引用,而是引用其成员变量。结构体变量一般不整体引用,而是引用其成员变量。成员变量引用格式成员变量引用格式结构体变量名结构体变量名. .成员名成员名其中的圆点运算符称为成员运算符,它的运算级别是最高的。其中的圆点运算符称为成员运算符,它的运算级别是最高的。(1) (1) 结构体类型变量的各成员(分量)必须单独引用结构体类型变量的各成员(分量)必须单独引用, ,成员运算符成员运算符“”具有最高优先级。具有最高优先级。(2) (2) 不允许对结构体变量进行整体的输入输出
30、不允许对结构体变量进行整体的输入输出 如:如:scanf(“%s%c%d%f”,&stu1); scanf(“%s%c%d%f”,&stu1); (3) (3) 如果结构体变量类型相同,可以互相赋值。如果结构体变量类型相同,可以互相赋值。 stu1=stu2; stu1=stu2; (4) (4) 严格区分类型与变量的概念。严格区分类型与变量的概念。 (5) (5) 如果结构体成员本身又是结构体类型的,则可继续使用成员运算如果结构体成员本身又是结构体类型的,则可继续使用成员运算符取结构体成员的结构体成员,逐级向下,引用最低一级的成员。程符取结构体成员的结构体成员,逐级向下,引用
31、最低一级的成员。程序只能对最低一级的成员进行运算。例如,对序只能对最低一级的成员进行运算。例如,对stu1stu1某些成员的访问:某些成员的访问: stu1.birthday.day=23stu1.birthday.day=23; stu1.birthday.month=8stu1.birthday.month=8; stu1.birthday.year=1985stu1.birthday.year=1985; 说明说明结构体变量的初始化结构体变量的初始化结构体变量可以在定义时初始化。结构体变量可以在定义时初始化。格式格式struct struct 结构体名结构体名 成员表;成员表; 结构体变量结构体变量=初始化数据表初始化数据表 ;例例 struct studentstruct student char name10; ch
温馨提示
- 1. 本站所有资源如无特殊说明,都需要本地电脑安装OFFICE2007和PDF阅读器。图纸软件为CAD,CAXA,PROE,UG,SolidWorks等.压缩文件请下载最新的WinRAR软件解压。
- 2. 本站的文档不包含任何第三方提供的附件图纸等,如果需要附件,请联系上传者。文件的所有权益归上传用户所有。
- 3. 本站RAR压缩包中若带图纸,网页内容里面会有图纸预览,若没有图纸预览就没有图纸。
- 4. 未经权益所有人同意不得将文件中的内容挪作商业或盈利用途。
- 5. 人人文库网仅提供信息存储空间,仅对用户上传内容的表现方式做保护处理,对用户上传分享的文档内容本身不做任何修改或编辑,并不能对任何下载内容负责。
- 6. 下载文件中如有侵权或不适当内容,请与我们联系,我们立即纠正。
- 7. 本站不保证下载资源的准确性、安全性和完整性, 同时也不承担用户因使用这些下载资源对自己和他人造成任何形式的伤害或损失。
最新文档
- 财政政策的宏观调控作用试题及答案
- 转油站火灾应急预案(3篇)
- 宾馆火灾应急援救预案(3篇)
- 火灾应急预案适用范围(3篇)
- 经济政策与政治稳定性的关系探讨试题及答案
- 厂区火灾应急疏散预案(3篇)
- 福利院火灾应急预案(3篇)
- 阐述积极向上的2023年高考作文试题及答案
- 针对性训练2024年数学试题及答案速查
- 行政法学思考与实践试题与答案
- 西部计划试题及答案
- 沟通的艺术智慧树知到期末考试答案章节答案2024年湖南师范大学
- 2024年江苏省扬州市中考英语试卷真题(含答案)
- 上海市2023-2024学年下学期八年级物理期末练习
- 辽宁省锦州市2024年中考二模考试道德与法治历史试题
- (高清版)JGT 486-2015 混凝土用复合掺合料
- 生物安全培训试题及答案
- 山东省滨州地区2024届中考二模历史试题含解析
- 体格检查病历示范范文16篇
- 2023-2024学年译林版六年级英语下册Unit8《Our dreams》单元检测卷(含答案)
- 河北钢铁集团矿业有限公司司家营铁矿矿山地质环境保护与土地复垦方案评审意见书
评论
0/150
提交评论