C语言-函数
2021-03-07 12:05:52 33 举报
AI智能生成
C语言中函数的定义及相关知识
作者其他创作
大纲/内容
函数
函数定义
无参函数定义
类型说明符 函数名(){ 函数体}或类型说明符 函数名(void){ 函数体}
有参函数定义
类型说明符 函数名(形式参数声明){ 函数体}
空函数
类型说明符 函数名(){}
函数由函数头+函数体组成
函数头
返回值类型
函数名
形式参数
函数体
函数的调用
调用形式
函数名(实际参数列表)
把函数调用作为一个语句,不要求函数带回值,只要求函数完成一定的操作。
在表达式中调用函数,这种表达式称为函数表达式。
讲函数调用作为另一个函数调用的实参。
函数声明
类型说明符 函数名(参数表)
不声明的情况
被调函数写在主调函数之前,可不必声明。
函数的返回值是整型或字符串,可不必声明。
在所有函数定义前,在源程序文件的开头进行了声明,则在各调用函数中不必对调用函数进行声明。
参数传递
函数中的形参变量在未出现函数调用时并不占内存单元。函数调用时,形参被临时分配内存单元,调用结束后形参内存释放。
函数一旦被定义,可多次调用,但必须保证形参和实参数据类型一致。
实参可以是常量、变量或表达式,但要求它们有确定的值。
在被定义的函数中,必须指定形参的数据类型。
实参对形参的值传递为“单向传递”。
返回语句和函数返回值
return (表达式);return 表达式;return;
return 语句可使函数从被调用函数中退出,返回到调用它的代码处,并像调用函数返回确定的值。
一个函数中可以有多个return语句,执行到哪一个return语句,哪一个语句起作用。
在定义函数时应当指定函数的类型,并且函数的类型一般应与return语句中表达式的类型一致。不一致时一函数类型为准。
函数的嵌套调用
函数的递归调用
直接递归调用
f函数 函数体中调用f函数。
间接递归调用
f函数的函数体中调用f1函数,f1函数体中调用f函数。
为防止无限递归,所有递归函数都需要设定终止条件。
数组作为函数的参数
数组元素作为函数的参数(实参)
数组名作为函数的参数(实参、形参)
在主调用函数和被调用函数中分别定义数组。
实参数组与形参数组数据类型一致。
实参数组的起始地址传递给形参数组,两个数组共同占用同一段内存单元,起到“地址传递”的效果。
形参数组可不知道大小,可使用数组名[]方式。
局部变量和全局变量
局部变量
函数内部定义的变量
主函数main中定义的变量也是局部变量,只在main函数中有效。main函数也不能使用其他函数中定义的变量。
函数的形参也属于局部变量。
在符合语句内定义的变量也属于局部变量,仅在此复合语句内有效。
不同函数中,可以使用相同名字的局部变量。
全局变量
函数外部定义的变量
优势:减少函数实参的个数,从而减少内存空间及传送数据时的时间消耗。
劣势:全局变量使得函数的执行依赖于外部变量,降低了程序的通用性。 降低了程序的清晰性。 全局变量从程序开始就占用了内存单元,直至程序结束才释放存储空间。
变量的存储类别
局部变量存储类别
全局变量存储类别
内部函数与外部函数
内部函数
外部函数
函数概述
一个程序可由一个或多个程序模块组成,每个程序模块可作为一个源程序文件。
C语言是以源文件为单位进行编译的,一个源程序可由一个或多个函数组成。
在C语言中,不管mian函数在程序中什么位置,程序总是从main函数开始执行,调用函数后,在main函数结束。
所有函数都是平行的,在定义时相互独立,一个函数不属于另一个函数。函数不可以嵌套定义,但可以相互调用,mian函数可以调用任何函数,一个函数可以多次调用,其他函数不能调用main函数。
0 条评论
回复 删除
下一页