最近学了了c语言函数,便整理一些笔记来顺便复习一遍。
从整体上来讲,函数是一段可以重复使用的代码。
那么为什么要有函数呢。
简单来讲,c语言本身带了许多库函数,并以头文件形式存放。使用时只要引入对应的头文件即可。除此以外,我们可以自己编写函数来使用,这就是函数。
无参函数的定义
定义时可以不带函数,如下所示:
返回值类型 函数名()
{
函数体
}
注意:函数不能嵌套定义,函数必须先定义后使用,所以函数只能在main函数里
main是定义函数,不是函数调用。
有函数的定义
如果函数需要接受用户传递的数据,定义时余姚带函数。ru'x如下;
返回值类型 函数名()
{
函数体
}
用户通过“参数列表”传递给函数,供函数处理。
注意:参数本质上也是变量,定义时要知名参数类型和参数名称;函数定义是给的参数成为形式参数。函数调用时
出的参数称为实际参数,简称实参。函数调用时,将实参的值纯递给形参,相当于一次赋值操作。
函数的声明和函数原型
c语言代码 原则上函数定义要出现在函数调用之前,否则就会报错。但事实上,经藏会在函数定义之前就使用他们
所以就要声明。所谓声明,就是提前告诉编辑器,若之前没有找到他的定义,不要报错,稍后我会补上这个函数定义。
函数声明的格式非常简单,相当于去掉函数定义中的函数体再加上分号;,如下所示:
(1)返回值类型 函数名( 类型 形参, 类型 形参… );
(2)也可以只写数据类型:返回值类型 函数名( 类型, 类型…);
递归函数
所谓递归函数就是一个函数在他的函数体内调用她自身成为递归函数。执行递归函数将反复调用其自身,没调用一次进入新的一层。
注意:
递归函数的定义,不应出现无终止的递归调用。而应定义为有限次数、有终止的递归调用函数。
对于一个问题,只要能够知道递归定义式,及边界条件(即递归终止的条件),就可以编写一个递归函数。
局部变量 和全局变量
所谓局部变量就是就是di定义在函数内部的变量。它的作用域仅限于函数内部,离开函数是无效的。
注意:
1) 在 main 函数中定义的变量也是局部变量,只能在 main 函数中使用;同时,main 函数中也不能使用其它函数中定义的变量。
2) 形参变量、在函数体内定义的变量都是局部变量。实参给形参传值的过程也就是给局部变量赋值的过程。
3) 可以在不同的函数中使用相同的变量名,它们表示不同的数据,分配不同的内存,互不干扰,也不会发生混淆。
4) 在语句块中也可定义变量,它的作用域只限于当前语句块。
全局变量
在所有函数外部定义的变量称为全局变量
注意:
在局部变量作用的范围内,局部变量有效,全局变量被屏蔽不起作用。
在c语言中只能有一个返回值,一次想得到函数返回多个值,可以使用全变变量。
存储方式
从变量作用域来看,可以分为全局变量和局部变量。
静态存储方式:是指在程序运行期间分配固定的存储空间的方式。
动态存储方式:是在程序运行期间根据需要进行动态的分配存储空间的方式。
数据存储类别‘
根据数据存储过程和存储位置的不同,将C的存储类别分为4种:自动的(auto)、静态的(static)、寄存器的(register)、外部的(extern)。根据变量的存储类别,可以知道变量的作用域和生存期。