欢迎来到天天文库
浏览记录
ID:37939589
大小:56.00 KB
页数:6页
时间:2019-06-03
《ans_函数调用》由会员上传分享,免费在线阅读,更多相关内容在行业资料-天天文库。
1、函数间的调用关系:由主函数调用其他函数,其他函数也可以互相调用。同一个函数可以被一个或多个函数调用任意多次。函数间可以互相调用,但不能调用main函数。main函数是系统调用的。在定义函数时是分别进行的,是互相独立的。一个函数并不从属于另一函数,即函数不能嵌套定义。#includevoidf2();voidf1();voidf2(){voidf1(){printf("1");}f1();printf("2");}main(){f1();f2();getch();}C语言规定,在程序中用到
2、的所有函数,必须“先定义,后使用”。定义函数包括以下几个内容:⒈指定函数的名字,以便以后按名调用。⒉指定函数的类型,函数值的类型。⒊指定函数的参数的名字和类型,以便在调用函数时向它们传递数据。对无参函数不需要这项。⒋指定函数应当执行什么操作,也就是函数是做什么的,即函数的功能。intmax(intx,inty)/*不能写成intx,y*/ {intz;/*函数体中的声明部分*/ z=x>y?x∶y;return(z);}关于形参与实参的说明:形参并不占内存中的存储单元。实参可以是常量、变量或表达式,例如:max
3、(3,a+b);实参向形参的数据传递是单向“值传递”,只能由实参传给形参,而不能由形参传回来给实参。在调用函数时,给形参分配存储单元,并将实参对应的值传递给形参,调用结束后,形参单元被释放,实参单元仍保留并维持原值。函数的返回值说明:一个函数中可以有一个以上的return语句,执行到哪一个return语句,哪一个语句起作用。如return(z);或returnz;如果函数值的类型和return语句中表达式的值不一致,则以函数类型为准。不带返回值的函数,应当用“void”定义函数为“无类型”(或称“空类型”)。此时
4、在函数体中写成return;或不出现return语句。函数的“定义”和“声明”不是一回事。•函数的定义是指对函数功能的确立,包括指定函数名,函数值类型、形参及其类型、函数体等,它是一个完整的、独立的函数单位。•函数的声明的作用则是把函数的名字、函数类型以及形参的类型、个数和顺序通知编译系统,以便在调用该函数时系统按此进行对照检查。它不包含函数体。#includevoidmain(){floatadd(floatx,floaty);/*对被调用函数add的声明*/floata,b,c;scanf(
5、"%f,%f",&a,&b);c=add(a,b);printf("sumis%f",c);}floatadd(floatx,floaty)/*函数首部*/{floatz;/*函数体*/z=x+y;return(z);}(1)如果被调用函数的定义出现在主调函数之前,可以不必加以声明。(2)如果已在文件的开头(在所有函数之前),已对本文件中所调用的函数进行了声明,则在各函数中不必对其所调用的函数再作声明。函数的嵌套调用(调用函数过程中,又调用另一个函数;不允许嵌套定义)递归函数(直接或间接地调用该函数本身):#
6、includeintage(intn)/*求年龄的递归函数*/{intc;/*c用作存放函数的返回值的变量*/if(n==1)c=10;elsec=age(n-1)+2;return(c);}voidmain(){printf(″%d″,age(3));}数组元素可以作为函数的实参,与用变量作实参一样,是单向传递,即“值传送”方式。用数组名作函数参数,此时形参应当用数组名或用指针变量,传递的是数组首元素的地址。在一个函数内部定义的变量是内部变量,它只在本函数范围内有效,也就是说只有在本函数内
7、才能使用它们,在此函数以外是不能使用这些变量的。这称为“局部变量”。不同函数中可以使用相同名字的变量,它们代表不同的对象,互不干扰。形式参数也是局部变量。在一个函数内部,可以在复合语句中定义变量,这些变量只在本复合语句中有效(而不在整个函数内有效),这种复合语句也称为“分程序”或“程序块”。函数之外定义的变量称为外部变量,外部变量是全局变量(也称全程变量),它的有效范围为从定义变量的位置开始到本源文件结束。在各个函数执行时都可能改变外部变量的值,程序容易出错。因此,要限制使用全局变量。局部变量的存储类别:auto
8、变量:调用该函数时系统会给它们分配存储空间,在函数调用结束时就自动释放这些存储空间,因此这类局部变量称为自动变量。(auto可以省略,默认情况下)静态局部变量:当函数中的局部变量的值在函数调用结束后不消失而保留原值时,该变量称为静态局部变量。用关键字static进行声明。(对静态局部变量是在编译时赋初值的,即只赋初值一次,在程序运行时它已有初值。以后每次调用函数时不再重新
此文档下载收益归作者所有