C语言学习(四)函数

一、函数概念及基本特征

也就是一段可以重复使用的代码。C语言本身自带许多库函数,当然我们也可以自己编辑函数。

函数的一个明显特征就是使用时带括号( ),必要的话,括号中还要包含数据或变量,称为参数(Parameter)。参数是函数需要处理的数据,例如:
strlen(str1)用来计算字符串的长度,str1就是参数。
puts("C语言中文网")用来输出字符串,"C语言中文网"就是参数。

还有一点就是函数一定要有返回值,也就是函数的执行结果。

二、函数的格式

那么我们自己定义的函数是什么样的呢?定义函数的格式为:

返回值类型 函数名()

{

函数体

}

返回值可以是任意的数据类型,例如int、float等。

函数名是标识符的一种,命名规则和标识符一样,以字母或下划线开始,函数后面的括号()不能少。

函数体是函数需要执行的代码,即使只有一个语句也要{}包围。

函数定义时给出的参数称为形式参数,简称形参;函数调用时给出的参数(传递的数据)称为实际参数,简称实参。函数调用时,将实参的值传递给形参,相当于一次赋值操作。 形参变量只有在函数被调用时才会分配内存,调用结束后,立刻释放内存,所以形参变量只有在函数内部有效,不能在函数外部使用。

三、递归函数

 一个函数在它的函数体内调用它自身称为递归调用,这种函数称为递归函数。执行递归函数将反复调用其自身,每调用一次就进入新的一层。

看一个简单的例子:求斐波那契数列(第一项为1,第二项为2,后一项等于前2项之和)的第n个数的值。

代码如下:

1 #include <stdio.h>
  2 
  3 int func(int n);
  4 
  5 int main()
  6 {
  7     int n;
  8     scanf("%d",&n);
  9     printf("%d\n",func(n));
 10     return 0;
 11 }
 12 
 13 int func(int n)
 14 {
 15     if(n == 1 || n == 2)
 16     return n;
 17     return  func(n-1) + func(n-2);
 18 
 19 }

在定义了func()函数之后,在函数体中我们再次调用func()函数,反复调用自身也就称为递归。

四、全局变量和局部变量

定义在函数内部的变量称为局部变量(Local Variable),它的作用域仅限于函数内部, 离开该函数后就是无效的,再使用就会报错。几点说明:
1) 在 main 函数中定义的变量也是局部变量,只能在 main 函数中使用;同时,main 函数中也不能使用其它函数中定义的变量。
2) 形参变量、在函数体内定义的变量都是局部变量。实参给形参传值的过程也就是给局部变量赋值的过程。
3) 可以在不同的函数中使用相同的变量名,它们表示不同的数据,分配不同的内存,互不干扰,也不会发生混淆。
4) 在语句块中也可定义变量,它的作用域只限于当前语句块。

全局变量
     在所有函数外部定义的变量称为全局变量(Global Variable),它的作用域默认是整个程序,也就是所有的源文件,包括 .c 和 .h 文件。
 注意:1、在局部变量作用的范围内,局部变量有效,全局变量被“屏蔽”不起作用。
2、C语言中的函数只能有一个返回值,以此想要得到函数返回的多个值,可以使用全局变量。
 

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值