前言
在遇到重复代码块时,我们如果不想把每一个都写出来,这就要用到函数了。函数可以让我们的代码更加简洁,有更高的可读性。
一、函数的定义与调用
1,函数的定义
定义:函数是一段可以重复使用的代码,用来独立地完成某个功能,它可以接收用户传递的数据,也可以不接收。接收用户数据的函数在定义时要指明参数,不接收用户数据的不需要指明,根据这一点可以将函数分为有参函数和无参函数。
函数构成:函数头(函数名,参数表,返回类型)
函数体
参数表:参数的类型,参数的个数,参数的返回类型
2,函数的调用
①调用格式:函数名(参数值);
②“()”起到手了表示函数调用的重要作用
即使没有参数也需要‘()’
③如果有参数,则需要给出正确的数量和顺序
④这些值会被按照顺序依次用来初始化函数中的参数
函数要把参数写全,如果没有参数就要加void
例:void swap(void);
3,函数原型
①函数头以‘ ; ’结尾,就构成了函数的原型
②函数原型的作用:函数名称
参数(数量及类型)
返回类型
函数的两种写法
1.
#include"stdafx.h"
void sum(int begin,int end);
int main()
{
sum(1,10);
sum(20,30);
sum(35,45);
return 0;
}
void sum(int begin,int end)
{
int i,sum;
for(i=begin,sum=0;i<=end;i++)
{
sum+=i;
}
printf("%d到%d的和是%d\n",begin,end,sum);
}
(在了解函数原型后就一般不使用这种写法,一般采用第二种)
2.
#include"stdio.h"
void summm(int begin,int end)
{
int i,sum;
for(i=begin,sum=0;i<=end;i++)
{
sum+=i;
}
printf("%d到%d的和是%d\n",begin,end,sum);
}
int main()
{
summm(1,10);
summm(20,30);
summm(35,45);
return 0;
}
二、返回值
1.函数中的返回值
概念:return停止函数的执行,并送回一个值
表达方式:①return;
②return 表达式;
作用:可以赋值给变量
可以再传递给函数
可以丢弃(例如:表达方式①)
2.没有返回值的函数
构成:void 函数名(参数表)
对于这种函数,可以自己选择是否带return,但是带return时就不能带值
在调用的时候不能做返回的赋值
例:
void sum(int begin,int end)
{
int i;
int sum = 0;
for( i=begin ; i<=end ; i++)
{
sum+=i;
}
printf("%d到%d的和是%d\n",begin,end,sum);
}
注:如果有返回值,那就必须带上return
自己编写的函数要写在上面(c的编译器自上而下分析代码)
三、函数中的变量
1.本地变量
概念:函数的每次运行,就产生了一个独立的变量空间,在这个空间中的变量,是函数的这次运行所独有的
定义在函数内部的变量就是本地变量。参数也是本地变量
2.变量的生存期
什么时候这个变量开始出现了,到什么时候它消亡了,在这个期间就是变量的生存期
3.变量的作用域
在(代码的)什么范围内可以访问这个变量(这个变量可以起作用),这个区间就是作用域
4.本地变量的规则
·本地变量是定义在块内的
·它可以是定义在函数的块内·也可以定义在语句的块内
·程序运行进入这个块之前,其中的变量不存在,离开这个块,其中的变量就消失了
·块外面定义的变量在里面仍然有效
·块里面定义了和外面同名的变量则掩盖了外面的。不能在一个块内定义同名的变量
·本地变量不会被默认初始化
·参数在进入函数的时候被初始化了
注意:在调用函数的时候,圆括号里的逗号是标点符号,而不是运算符
例:f(a,b) f((a,b))
如果加了括号就是先做里面的运算,否则逗号就是标点符号
c语言不允许函数嵌套,但可以放另一个函数的声明(不能放定义)
Int main()也是函数,里面没有参数,也可以加void
总结
函数是一段可以重复使用的代码,用来独立地完成某个功能,使用函数可以让代码更加简化,增强可读性,更便于理解。但在使用前要先想好定义的函数是什么。