c语言第7章函数_第1页
c语言第7章函数_第2页
c语言第7章函数_第3页
c语言第7章函数_第4页
c语言第7章函数_第5页
已阅读5页,还剩51页未读 继续免费阅读

下载本文档

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

文档简介

11第7章函数本章要点函数的概念函数的定义与调用变量的作用域函数的嵌套调用函数的递归调用3本节重点掌握内容一、函数概述二、函数的定义三、函数的调用四、C程序的执行过程4C程序的结构:、、、、、、、、5函数是C语言的基本构件main()func1()func2()func3()func4()func5()func6()

程序模块结构图主函数完成原始数据的输入、输出,以及对所需子函数的调用功能。每一个函数解决一个独立的问题,完成一个独立的功能一个C程序的源文件:由一个或若干个函数组成7函数定义的一般形式:[函数类型说明符]函数名[类型名参数名1,...,类型名参数名n][变量定义和变量、函数说明部分][语句部分](){}函数的标志函数的标志函数体函数体8例1:

voidabc(){

intwww(){……}……}函数定义函数定义9intwww(){……}voidabc(){……}分别定义函数无参数时,这对“()”也不能省略函数说明函数定义12函数的几种调用方式

printstar();

print_mess();

c=div1(a,b);1.函数调用作为语句2.表达式中的函数调用3.函数调用作为实参printf("%f\n",power(2,3.0));14函数的返回值return语句的功能结束函数的执行返回函数值15floatfmax(floatx,floaty){ floatz; z=x>y?x:y;

returnz;}函数头函数体函数fmax被调用之后返回给主调函数的值为float型例:函数返回值16参数传递:数值单向传递voidexch(intx,inty){

intt;

t=x;x=y;y=t;

}此函数的功能?20四、C程序的执行过程:源文件以ASCII码形式存放在磁盘上,例:abc.c编译链接之后,产生了可执行文件:abc.exe,存放在磁盘上的指定路径下。abc

被调入到内存之后,放入指定的内存区:主函数放在主函数区子函数放在子函数区21程序的存放:子函数区主函数区22程序从主函数开始执行:执行是按照语句的排列顺序进行的。inti=1;1itest(i++,i);执行到了函数调用语句23当执行到函数调用语句时:首先为函数开辟一片新的存储区。然后进行虚实结合:按照参数的对应位置,将调用函数的实参值赋给对应的形参。即:完成一组赋值操作,赋值的顺序由右向左。子函数区(test)xytest(i++,i);test(intx,inty)1124执行结果:x=1y=1

当执行到函数的最后一个“}”时,函数执行结束。系统收回函数所占用的存储区,函数中的所有动态变量都不复存在。程序控制转回到调用语句的后面。进入子函数体,开始按顺序执行子函数中的每一条语句;25回到主函数:主函数区26开始新的函数调用:test(++i,i);test(intx,inty)子函数区(test)xy1227进入子函数体,开始按顺序执行子函数中的每一条语句;当执行到函数的最后一个“}”时,函数执行结束。系统收回函数所占用的存储区。函数中的所有动态变量都不复存在。程序控制转回到调用语句的后面。28回到主函数:主函数区程序结束课堂练习1:把如下程序的子函数补充完整。#include<stdio.h>voidmain(){int

max(int,int);

int

a,b;

scanf("%d%d",&a,&b);

printf(“maxofa,b=%d\n”,max(a,b));}/*****以下为子函数。**********//**比较2个整型数的大小,并返回较大的数。*******/、、、、/**************************************/#include<stdio.h>voidmain(){int

max(int,int);

int

a,b;

scanf("%d%d",&a,&b);

printf(“maxofa,b=%d\n”,max(a,b));}/*****以下为子函数。**********/int

max(int

x,inty){ returnx>y?x:y;}/**************************************/课堂练习2要求:1、定义一个函数power,函数类型为double类型,2个参数:a,b,为int

类型;计算a^b并返回其值。2、定义主函数,要求从键盘接收2个数,分别赋给x,y,调用函数power()计算x^y,并输出。36

本章要点函数的概念函数的定义与调用变量的作用域函数的嵌套调用函数的递归调用37变量的作用域及存储类型局部变量和全局变量动态存储变量和静态存储变量局部变量的存储方式全局变量的存储方式引例:全局变量的作用域举例—分析下面程序运行结果40例:

func(inta,charch)

{

intb=1,c=2;

floatf;...

a=5a=3{inta,b=3;

a=b+c;

printf("a=%d\n",a);}a=b+c;

printf("a=%d\n",a);

}Why?输入2,5?结论:全局变量在任何程序内可见输入2,5?a=3,b=7?43变量的作用域及存储类型局部变量和全局变量动态存储变量和静态存储变量局部变量的存储方式全局变量的存储方式从变量的存储角度认识变量44静态存储区程序区动态存储区存放程序的全局数据和静态数据存放动态数据程序开始执行时分配存储单元,程序执行完毕后释放所定义的函数被调用时才分配存储单元,函数结束时就释放存放用户程序代码内存45变量的存储方式

静态存储方式:自动变量和寄存器变量

动态存储方式:静态变量和外部变量变量的存储四种存储类型:auto

自动变量register

寄存器变量static

静态变量extern

外部变量(全局变量)46变量的作用域及存储类型局部变量和全局变量动态存储变量和静态存储变量局部变量的存储方式全局变量的存储方式47局部变量存储类别的定义形式:CPU寄存器内存静态存储区动态存储区registerinta;autofloata;或

floata;staticinta;49定义全局变量中关键字的使用用static定义静态全局变量若在源文件的开头有:

staticinta

;用extern说明全局变量若在源文件的开头有:

externinta

意味着该变量在其它文件中定义,在本文件中被使用。50存储类别小结局部变量和全局变量;从变量存在的时间来区分,有动态存储和静态

温馨提示

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

评论

0/150

提交评论