c语言大学实用教程-第5章-函数课件

PPT
  • 阅读 57 次
  • 下载 0 次
  • 页数 76 页
  • 大小 992.691 KB
  • 2022-11-24 上传
  • 收藏
  • 违规举报
  • © 版权认领
下载文档30.00 元 加入VIP免费下载
此文档由【小橙橙】提供上传,收益归文档提供者,本网站只提供存储服务。若此文档侵犯了您的版权,欢迎进行违规举报版权认领
c语言大学实用教程-第5章-函数课件
可在后台配置第一页与第二页中间广告代码
c语言大学实用教程-第5章-函数课件
可在后台配置第二页与第三页中间广告代码
c语言大学实用教程-第5章-函数课件
可在后台配置第三页与第四页中间广告代码
c语言大学实用教程-第5章-函数课件
c语言大学实用教程-第5章-函数课件
还剩10页未读,继续阅读
【这是免费文档,您可以免费阅读】
/ 76
  • 收藏
  • 违规举报
  • © 版权认领
下载文档30.00 元 加入VIP免费下载
文本内容

【文档说明】c语言大学实用教程-第5章-函数课件.ppt,共(76)页,992.691 KB,由小橙橙上传

转载请保留链接:https://www.ichengzhen.cn/view-44546.html

以下为本文档部分文字说明:

第5章函数与程序结构1完整版ppt2022/11/242内容提要函数定义、函数调用、函数原型、函数返回值–难点:函数的参数传递与返回值全局变量、自动变量、静态变量、寄存器变量–难点:变量的作用域与存储类型结构设计与模块化代码风格问题MoeCur

lyLarry2022/11/243程序设计的艺术程序设计方式A.诸葛亮型的主函数–1986年IBM在OS/360的研究结果:大多数有错误的函数都大于500行B.功能单一,规模较小的若干个函数各司其职–1991年对148,000行代码的研究表明:小于143行的函数比更长的函数更

容易维护2022/11/244程序设计的艺术《三国演义》中有这样一段描写:–懿问曰:“孔明寝食及事之烦简若何?”使者曰:“丞相夙兴夜寐,罚二十以上皆亲览焉。所啖之食,日不过数升。”懿顾谓诸将曰:“孔明食少事烦,其能久乎?”–此话音落不久,诸葛亮果然病故

于五丈原。“事无巨细”,“事必躬亲”–管理学的观点是极其排斥这种做法的,认为工作必须分工,各司其职–其中的思想,在程序设计里也适用2022/11/245程序设计的艺术结构化程序设计有两大最高级的艺术–算法设计艺术–结构设计艺术C语言为

程序的结构提供了两样武器–函数和模块函数(function)是结构设计的最基本单位–“一个程序应该是轻灵自由的,它的子过程就象串在一根线上的珍珠。”GeoffreyJames的《编程之道》2022/11/246数学函数(1)()yfx自变量因变量函数名2022/11/247数学函数(2)22

35yxxnmzaxbyc一个自变量,一个因变量两个自变量,一个因变量2022/11/248数学函数(3)11223344253816610852432539yxyxyxyx

YAX自变量因变量2022/11/249数学函数(4)()yfx一个变量二个变量……N个变量一个变量二个变量……N个变量自变量与因变量的关系2022/11/2410数学函数(5)集合A关系集合B2022/11/24

11程序设计中的函数程序设计中的函数不局限于计算–计算类,如打印阶乘表的程序……–判断推理类,如排序、查找……2022/11/2412用函数解决问题的要点分而治之–函数把较大的任务分解成若干个较小的任务,并提炼出公用任务复用–程序员可以在其他函数的基础上构造程序,而不需要从

头做起信息隐藏–设计得当的函数可以把具体操作细节对程序中不需要知道它们的那些部分隐藏掉,从而使整个程序结构清楚MoeCurlyLarry2022/11/2413C中的函数(Function)说明:一个源程序文件由一个或多个函数组成。C程序的执行从main函数开始,调用其他函数

后流程回到main函数,在main函数中结束整个程序运行。所有函数都是平行的,即函数定义时是互相独立的,一个函数并不从属于另一个函数。2022/11/2414例2.1:一个简单的C程序例子#include<stdio.

h>/*函数功能:计算两个整数相加之和入口参数:整型数据a和b返回值:整型数a和b之和*/intAdd(inta,intb){return(a+b);}/*主函数*/main(){intx,y,sum=0;printf("Inputtwointegers:");scanf("%d%d",

&x,&y);/*输入两个整型数x和y*/sum=Add(x,y);/*调用函数Add计算x和y相加之和*/printf("sum=%d\n",sum);/*输出x和y相加之和*/}并列的两个函数其中一个是程序的入口程序注释2022/

11/2415函数的分类标准函数,即库函数用户自定义函数2022/11/2416函数定义(definition)返回值类型函数名(类型参数1,类型参数2,……){函数体return表达式;}如果没有参数,则应

该用void注明函数的返回值只有一个如果不需要返回值,则应该用void定义返回值类型–返回值类型与return语句配合当函数执行到return语句时,就中止函数的执行,返回到调用它的地方函数内部可以定义只能自己使用的变量,称内部变量。–参数表里的变量也是内部变量函数的返回值是通过函

数中的return语句获得的。2022/11/2417函数参数函数参数:–形参(形式参数):在定义函数时,定义函数名后面括号中的变量名–实参(实际参数):在主调函数中调用一个函数,调用函数名后面括号中的参数(或表达式)intAverage(int

x,inty){intresult;result=(x+y)/2;returnresult;}main(){inta=12;intb=24;intave;ave=Average(a,b);printf(……);}数据传递执行顺序实参形参2022/1

1/2418实参的数量必须与形参相等,对应的类型必须匹配;实参与形参有各自的存储空间,所以形参值的改变不会影响实参;参数的类型没有限制,也可以定义没有参数的函数;2022/11/2419函数调用(call)从实参到形参是单向值传递

调用函数时,必须提供所有的参数(且必须是已赋值的)–特例,printf和scanf是采用变长变量表定义的函数,所以变量的个数不固定。提供的参数个数、类型、顺序应与定义时相同形式参数实际参数2022/11/2420例5.1a计算两个整数的平均数/*函数功能:计算平均数

函数入口参数:整型x,存储第一个运算数整型y,存储第二个运算数函数返回值:平均数*/intAverage(intx,inty){intresult;result=(x+y)/2;returnresult;}2022/11/2421例5.1b使用了A

verage函数的main()main(){inta=12;intb=24;intave;ave=Average(a,b);printf("Averageof%dand%dis%d.\n",a,b,ave);}intAverage(intx,inty){intresult;result

=(x+y)/2;returnresult;}main(){inta=12;intb=24;intave;ave=Average(a,b);printf(……);}数据传递执行顺序2022/11/2422函数调用(call)有返

回值时–放到一个数值表达式中如c=max(a,b);–作为另一个函数调用的参数如c=max(max(a,b),c);printf("%d\n",max(a,b));无返回值时–函数调用表达式如display(a,b);返回值=函数名(实参表列);函数

名(实参表列);2022/11/2423函数原型(prototype)返回值类型函数名(类型参数1,类型参数2,……);调用一个函数之前,先要对其返回值类型、函数名和参数进行声明(declare)(不声明也能使用,但运行结果

可能不稳定)–有助于编译器进行类型检查除了末尾分号外,声明的语法格式与函数定义的首部完全一致;2022/11/2424例5.1#include<stdio.h>intAverage(intx,inty);/*声明Average()函数*/main(){i

nta=12;intb=24;intave=Average(a,b);printf("Averageof%dand%dis%d.\n",a,b,ave);}/*函数功能:计算平均数函数入口参数:整型x,存储第一个运算数整型

y,存储第二个运算数函数返回值:平均数*/intAverage(intx,inty){intresult;result=(x+y)/2;returnresult;}2022/11/2425例5.1intAverage(intx,inty);/*声明Average()函数*/……mai

n()/*主函数*/{……intave=Average(a,b);/*调用函数Average*/……}intAverage(intx,inty)/*自定义函数Average*/{……}2022/11/2426例5.1#in

clude<stdio.h>/*函数功能:计算平均数函数入口参数:整型x,存储第一个运算数整型y,存储第二个运算数函数返回值:平均数*/intAverage(intx,inty){intresult;result=(x+y)/2;returnresult;}

main(){inta=12;intb=24;intave=Average(a,b);printf("Averageof%dand%dis%d.\n",a,b,ave);}当返回值为整型或者函数定义在函数调用前面时,可以

省略原型2022/11/2427main(){……a();}a函数{b();…return;}b函数{……return;}①③④⑤⑥⑦②在被调函数中,又调用了函数----嵌套调用函数的嵌套调用2022/11/2428循序渐进式编程实验4:小学生加法考试题通过输入两个加数给学生出一道加法运算

题输入答案正确:right错误:Notcorrect!Tryagain!2022/11/2429只答1次直到做对为止最多给3次机会随机出题连续做10道题统计分数循序渐进式编程实验4:小学生加法考试题2022/11/2430voidPri

nt(intflag){if(flag)printf("Right!\n");elseprintf("Notcorrect!\n");}实验4:小学生加法考试题/*函数功能:计算两整型数之和,如果与用户输入的答案相同,则返回1,否则返回0函数参数:整型变量a和b,分别代表被加数和加数函数返回值:

当a加b的结果与用户输入的答案相同时,返回1,否则返回0*/intAddTest(inta,intb){intanswer;printf("%d+%d=",a,b);scanf("%d",&answer);if(a+b==answer)return1;elsereturn0;}只答1次2022/

11/2431main(){inta,b,answer;printf("Inputa,b:");scanf("%d,%d",&a,&b);answer=AddTest(a,b);Print(answer);}do{}while(

answer==0);实验4:小学生加法考试题直到做对为止2022/11/2432main(){answer=AddTest(a,b);Print(answer,chance);}chance=0;do{chance++;}while(answer==0&&chance<

3);实验4:小学生加法考试题最多给3次机会2022/11/2433srand(time(NULL));error=0;score=0;for(i=0;i<10;i++){a=rand()%10+1;b=rand()%10+1;answer=AddTest(a,b);Print(answer)

;if(answer==1)score=score+10;elseerror++;}实验4:小学生加法考试题随机出题连续做10道题统计分数2022/11/2434作业P162,5.7,5.82022/11/

2435软件测试测试–通过运行测试用例找出软件中的Bug测试的目的–发现更多的Bug测试人员的主要任务–站在使用者的角度,通过不断使用和攻击,尽量多的找出Bug如何提高可测试性(tesability)–一条语句写一行才容易测试2022/11/2436软件测试测试只能证明程序

有错,不能证明程序无错——E.W.Dijkstra测试的重要性–测试人员水平越高,找到Bug的时间就越早,软件就越容易修复,产品发行就越稳定–越大型的软件开发,测试人员占整个软件产品团队的总人数的比重就越大,甚至一半以上–成功的测试在于发现迄今为止尚未发现的Bug

2022/11/2437软件测试方法的分类从代码和用户使用的角度分类覆盖性测试–从代码特性的角度(即内部)出发的测试–单元测试,功能测试,提交测试,基本验证测试,回归测试使用测试–从用户的角度(即外部)出发的测试–配臵测试,兼容性测试,性能测试,Alph

a和Beta测试,强力测试,文档和帮助文件测试2022/11/2438软件测试方法的分类第2种分类方法白盒测试(结构测试)–在完全了解程序的结构和处理过程的情况下,按照程序内部的逻辑测试程序,检验程序中

的每条通路是否都能按预定要求正确工作黑盒测试(功能测试)–不考虑程序内部的结构和处理过程2022/11/2439软件测试方法的分类第3种分类方法手工测试–依靠人力来查找Bug自动测试–编写一些测试工具,让他们自动运行来查找B

ug–优点:快,广泛–缺点:只能检查一些最重要的问题,如内存泄漏、死机等,无法发现一般性的日常错误,而且编写测试工具的工作量很大2022/11/2440程序中常见的出错原因编译错误–指在编译过程中发现的错误,通常属于语法错误,即编写的语句不符合C语言的语法规则。Undefineds

ymbol‘xxx’标识符xxx未定义Expressionsyntaxerror表达式语法错误Toofewparameterincall函数调用时的实参少于函数的形参2022/11/2441程序中常见的出错原因运行错误–指在程序运行时发生的错误–往往是由于语义上的错误造成的,即

语句虽然合乎语法,但要求计算机去做不该做或做不到的事情。–例如当用0做除数时,运行后将显示“Divisionbyzero”错误提示信息,并立即返回编辑屏幕。查看运行结果时,可在Userscreen(用户屏幕)上看到给出的错误提示信息。2022/11/2442程序中常见的出错原因

逻辑错误–程序中有逻辑错时,不影响程序运行并得到运行结果,只是运行结果不正确。比较隐蔽,出错后不易查找。–累加求和运算时,累加和变量忘记了赋初值;–累乘运算时,累乘变量初值赋值为0;–函数声明时的返回值数据类

型与实际返回的数据类型不一致,导致自动类型转换–数组下标越界(即超出了定义的范围);–程序中存在死循环;2022/11/2443调试的基本方法“粗分细找”–定位大致的范围:归纳、推理、二分、排除缩减输

入数据–设法找到能导致失败的最小输入采用注释的办法切掉一些代码–减少有关的代码区域,调试无误后再将它们打开注释,即采用分而治之的策略将问题局部化利用调试工具–逐条语句跟踪插入打印语句–观看屏幕输

出结果2022/11/244444VC++6.0中的调试功能项及快捷键快捷键菜单项功能Ctrl+F10RuntoCursor执行到光标所在的那一行F5Run执行程序直至断点或程序结束F11StepInto单步执行,执行当前一行,若当

前行有自定义函数,则进入函数内部F10StepOver单步执行,执行当前一行Shift+F11StepOut执行至本函数结束,回到调用者Shift+F5StopDebugging终止运行,回到未运行状态Ctrl+Shift+F5Restart从头开始重新运行程序,直至

断点或程序结束2022/11/2445程序调试实例—例5.11#include<stdio.h>intFactorial(intx);main(){intx;while(1)/*无限循环*/{printf("请输入一个正整数x(若输入-1退出程序):");scanf("%

d",&x);if(x=-1)break;/*循环出口*/elseprintf("Thefactorialof%dis%d.\n",x,Factorial(x));}}存在一处错误!!!2022/11/2446程序调试实例—例5.11/*函数功能:计算x的阶乘函数入口参数

:整型x函数返回值:阶乘运算结果*/intFactorial(intx){inti,result;for(i=1;i<=x;i++)result*=i;returnresult;}存在一处错误!!!2022/11/2447程序调试实例—例5.11/*函数功能:计

算x的阶乘函数入口参数:无符号长整型x函数返回值:阶乘运算结果*/unsignedlongFactorial(unsignedintx){unsignedlongi,result=1;for(i=2;i<=x;i++)result*=i;returnresu

lt;}2022/11/2448关于代码风格问题缩进(indent)—保证代码整洁、层次清晰的主要手段intisprime(intn){intk,i;k=sqrt((double)n);for(i=2;i<=k;i++){if(n%i=

=0)return0;}return1;}#include<math.h>main(){inti;for(i=2;i<100;i++){if(isprime(i))printf("%d\t",i);}}2022/11/2449

关于代码风格问题良好风格的程序应严格采用梯形层次对应好各层次intIsPrime(intn){intk,i;k=sqrt((double)n);for(i=2;i<=k;i++){if(n%i==0)return0;}return1;}#in

clude<math.h>main(){inti;for(i=2;i<100;i++){if(IsPrime(i))printf("%d\t",i);}}2022/11/2450程序版式现在的许多开发环境、编辑软件都支持“自动缩进”–根据用户代码的输

入,智能判断应该缩进还是反缩进,替用户完成调整缩进的工作VC中有自动整理格式功能–只要选取需要的代码,按ALT+F8就能自动整理2022/11/2451命名规则在Linux/Unix平台–习惯用function_name本书采

用Windows风格函数名命名–用大写字母开头、大小写混排的单词组合而成–FunctionName变量名形式–“名词”或者“形容词+名词”–如变量名oldValue与newValue等函数名形式–“动词”或者“动词+名词”(动宾词组

)–如函数名GetMax()等2022/11/2452对函数接口加以注释说明/*函数功能:实现××××功能函数参数:参数1,表示×××××参数2,表示×××××函数返回值:×××××*/返回值类型函数名(参数表){函数体return表达式;}2022/11/2453变量的作用域指在源程序中定

义变量的位臵及其能被读写访问的范围分为–局部变量(LocalVariable)–全局变量(GlobalVariable)2022/11/2454局部变量局部变量–在语句块/函数内定义的变量–形参也是局部变量

特点–定义时不会自动初始化,除非程序员指定初值–进入语句块时获得内存,仅能由语句块内语句访问,退出语句块时释放内存,不再有效–并列语句块各自定义的同名变量互不干扰2022/11/2455全局变量全局变量–在所有函数之外定义

的变量特点–在程序中定义它的位臵以后都有效–在定义点之前或在其他文件中引用,应该进行如下声明:extern类型名变量名;–从程序运行起即占据内存,程序运行过程中可随时访问,程序退出时释放内存–使函数之间的数据交换更容易,也更高效但是并不推荐使用,尽量

少用因为谁都可以改写全局变量,所以很难确定是谁改写了它P140:全局变量不指定初始值时程序自动初始化为0.2022/11/2456例5.7#include<stdio.h>intglobal=1;/*定义全局变量*/voidGlobalPlusPl

us(void);main(){printf("BeforeGlobalPlusPlus(),itis%d\n",global);GlobalPlusPlus();printf("AfterGlobalPlusPlu

s(),itis%d\n",global);}/*函数功能:对全局变量global加1,并打印加1之前与之后的值函数入口参数:无函数返回值:无*/voidGlobalPlusPlus(void){printf("Before++,it

is%d\n",global);global++;printf("After++,itis%d\n",global);}BeforeGlobalPlusPlus(),itis1Before++,itis1After++,itis

2AfterGlobalPlusPlus(),itis22022/11/2457例5.7#include<stdio.h>voidGlobalPlusPlus(void);main(){intglobal=1;printf("BeforeGlobalPlusPlu

s(),itis%d\n",global);GlobalPlusPlus();printf("AfterGlobalPlusPlus(),itis%d\n",global);}/*函数功能:对局部变量global加1,并打印加1之前与之后的值函数入口参数:无函数返回值

:无*/voidGlobalPlusPlus(void){intglobal=1;printf("Before++,itis%d\n",global);global++;printf("After++,itis%d\n",global);}BeforeGlobalPlusPlus(

),itis1Before++,itis1After++,itis2AfterGlobalPlusPlus(),itis12022/11/2458例外部变量与局部变量同名#include<stdio.h>inta=3,b=5;/

*a,b为外部变量*/voidmain(){inta=8;/*a为局部变量*/printf("%d\n",max(a,b));}max(inta,intb)/*a,b为局部变量*/{intc;c=a>b?a:b;return(c);}运行结

果为82022/11/2459例5.7#include<stdio.h>voidGlobalPlusPlus(void);intmain(void){intglobal;printf("BeforeGlobalPlusPlus(),itis%d\n",glo

bal);GlobalPlusPlus();printf("AfterGlobalPlusPlus(),itis%d\n",global);return0;}/*函数功能:对局部变量global加1,并打印加1之前与之后的值函数入口参数:无函数返回值:

无*/intglobal=1;voidGlobalPlusPlus(void){printf("Before++,itis%d\n",global);global++;printf("After++,itis%d\n"

,global);}BeforeGlobalPlusPlus(),itis1812Before++,itis1After++,itis2AfterGlobalPlusPlus(),itis1812随机值2022/11/2460例5.7#include<stdio.h>voidGlobal

PlusPlus(void);intmain(void){externintglobal;printf("BeforeGlobalPlusPlus(),itis%d\n",global);GlobalPlusPlus();printf("AfterGlobalPlusP

lus(),itis%d\n",global);return0;}/*函数功能:对局部变量global加1,并打印加1之前与之后的值函数入口参数:无函数返回值:无*/intglobal=1;voidGlobal

PlusPlus(void){printf("Before++,itis%d\n",global);global++;printf("After++,itis%d\n",global);}BeforeGlobalPlusPlus(),

itis1Before++,itis1After++,itis2AfterGlobalPlusPlus(),itis22022/11/2461变量的存储类型指数据在内存中存储的方式即编译器为变量分配内存的方式,它决定变量的生

存期动态存储–根据需要临时分配存储空间,离开即释放静态存储–在程序运行期间分配固定的存储空间不释放程序区静态存储区动态存储区形参、自动变量、函数调用的现场等全局变量、静态变量2022/11/2463静态变量

(static)一般的内部变量–在函数退出后失效,再次进入函数,变量值重新初始化静态变量–在变量类型前面用static修饰staticinti;–变量的值可以保存到下次进入函数,使函数具有记忆功能2022/11/2

464例5.8#include<stdio.h>voidFunc(void);main(){inti;for(i=0;i<10;i++){Func();}}/*函数功能:打印被调用的次数函数入口参数:无函数返回值:

无*/voidFunc(void){inttimes=1;/*自动变量*/printf("Func()wascalled%dtime(s).\n",times++);}Func()wascalled1time(s).Func()wascalled1time(s).Func()wascalled1

time(s).Func()wascalled1time(s).Func()wascalled1time(s).Func()wascalled1time(s).Func()wascalled1time(s).Func()wascal

led1time(s).Func()wascalled1time(s).Func()wascalled1time(s).2022/11/2465例5.8#include<stdio.h>voidFunc(void);main(){inti;for(i=0;i<10;i++){Func();}}/*

函数功能:打印被调用的次数函数入口参数:无函数返回值:无*/voidFunc(void){staticinttimes=1;/*静态局部变量*/printf("Func()wascalled%dtime(s).\

n",times++);}Func()wascalled1time(s).Func()wascalled2time(s).Func()wascalled3time(s).Func()wascalled4time(s).Func()wascalled5

time(s).Func()wascalled6time(s).Func()wascalled7time(s).Func()wascalled8time(s).Func()wascalled9time(s).Func()wascalled10tim

e(s).2022/11/2466静态变量静态变量和全局变量都是静态存储类型–自动初始化为0–从静态存储区分配,生存期为整个程序运行期间–但作用域不同程序区静态存储区动态存储区形参、自动变量、函数调用的现场等全局变量、静态变量2022/11/2468模块化程序设计方法什么时候需要模块化

?–某一功能,如果重复实现3遍以上,即应考虑模块化,将它写成通用函数,并向小组成员发布要尽可能复用其它人的现成模块。2022/11/2469习题5.7计算复用Factorial函数的代码unsignedlongFactorial(unsignedintnumber);main(){

unsignedintm,k;unsignedlongp;printf("Pleaseinputm,k:");scanf("%u,%u",&m,&k);p=Factorial(k)/Factorial

(m-k);printf("p=%lu\n",p);})!(!kmkp2022/11/2470/*函数功能:计算无符号整型数number的阶乘*/unsignedlongFactorial(unsignedintnum

ber){unsignedlongi,result=1;for(i=2;i<=number;i++){result*=i;}returnresult;}2022/11/2471模块化程序设计方法功能分解–自顶向下、逐步求精的过程模块分解的原则–保证模块的

相对独立性高聚合、低耦合–模块的实现细节对外不可见外部:关心做什么内部:关心怎么做设计好模块接口–接口是指罗列出一个模块的所有的与外部打交道的变量等–定义好后不要轻易改动–在模块开头(文件的开头)进行函数声明2022/11/2472函数设计的原则函数的功能要单一,不要设计多用途的函

数函数的规模要小,尽量控制在50行代码以内–1986年IBM在OS/360的研究结果:大多数有错误的函数都大于500行–1991年对148,000行代码的研究表明:小于143行的函数比更长的函数更容易维护参数和返回值的规则–参数要书写完

整,不要省略–对函数的入口参数进行有效性检查–没有参数和返回值时,用void填充–每个函数只有一个入口和一个出口,尽量不使用全局变量–尽量少用静态局部变量,以避免使函数具有“记忆”功能2022/11/2475模块和链接优点:–当一个文件的代码被修改后,不必

对所有程序重新编译,从而节省了程序的编译时间。–使程序更宜于维护,给多个程序员共同编制一个大型项目的代码提供了方便手段。2022/11/24765.9递归P154汉诺塔问题函数自己调用自己例5-12计算n!2022/11/2477#

include<stdio.h>longfact(longn);intmain(void){intn;longresult;printf("Inputn:");scanf("%d",&n);result=fact(n);if(result!=0){printf("%d!=%ld\n",n,r

esult);}}/*/函数功能:当n>2时递归计算n!的值。当n为0或1时,返回1;当n小于0时,返回0*/longfact(longn){longresult;if(n<0){return0;/*如果n<0,打印

出错信息*/}elseif(n==0||n==1){return1;/*递归终止条件*/}else{result=n*fact(n-1);/*递归调用*/returnresult;}}2022/11/2478这一章我们学习了函数的定义、调用变量的作用域、存储类

–自动变量(auto)–外部变量(extern)–静态变量(static)–寄存器变量(register)程序调试方法2022/11/2479作业P162,习题5.7此课件下载可自行编辑修改,供参考!感谢您的支持,我们努力做得更好!

小橙橙
小橙橙
文档分享,欢迎浏览!
  • 文档 25747
  • 被下载 7
  • 被收藏 0
相关资源
广告代码123
若发现您的权益受到侵害,请立即联系客服,我们会尽快为您处理。侵权客服QQ:395972555 (支持时间:9:00-21:00) 公众号
Powered by 太赞文库
×
确认删除?