函数
函数是一块代码,接收零个或多个参数,做一件事情,并返回零个或一个值。
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); //这个大括号里面是函数体
}
void:返回类型 sum:函数名 sum后面括号里面是参数表
函数名(参数值);
()起到了表示函数调用的重要作用
即使没有参数也需要()
如果有参数,则需要给出正确的数量和顺序
这些值会被按照顺序依次用来初始化函数中的参数
函数知道每一次是哪里调用它,会返回到正确的地方
return
return停止函数的执行,并送回一个值。
return;
return 表达式;
从函数中返回值 可以赋给变量,可以传递给函数,甚至可以丢弃
没有返回值的函数
void 函数名(参数表)
不能使用带值的return
可以没有return
调用的时候不能做返回值的赋值
函数有返回值,则必须使用带值的return
凡不要求返回值的函数都应定义为 void 类型。
//返回两个整数中较大的一个
int max(int a, int b){
if(a > b){
return a;
}else{
return b;
}
}
return 语句可以有多个,可以出现在函数体的任意位置,但是每次调用函数只能有一个 return 语句被执行,所以只有一个返回值。
如果a>b成立,就执行return a,return b不会执行;如果不成立,就执行return b,return a不会执行。
函数一旦遇到 return 语句就立即返回,后面的所有语句都不会被执行到了。return 语句还有强制结束函数执行的作用。
#include<stdio.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;
int sum=0;
for(i=begin;i<=end;i++){
sum +=i;
}
printf("%d到%d的和是%d\n",begin,end,sum);
}
函数原型
函数头,以分号“;”结尾,就构成了函数的原型
目的是告诉编译器这个函数的样子:名称,参数(数量跟类型),返回类型
原型里可以不写参数的名字,一般写上
调用函数
如果函数有参数,调用函数时必须传递给它数量,类型正确的值。
值时表达式的结果,包括:字面量 变量 函数返回值 计算结果
c语言调用函数时,永远只能传值给函数
本地变量
定义在函数内部的变量就是本地变量
参数也是本地变量
变量的生存期和作用域
生存期:什么时候这个变量开始出现了,到什么时候他消亡了
作用域:在(代码的)什么范围内可以访问这个变量(这个变量可以起什么作用)
对于本地变量,这俩问题统一:大括号内——块
本地变量规则
是定义在块内的(定义在函数的块内,也可以是在语句的块内)
程序运行这个块之前,其中变量不存在,离开这个块,其中变量就消失了
块外面定义的变量在里面仍然有效
块里面定义了和外面同名的变量则掩盖了外面的
不能在一个块内定义同名的变量
本地变量不会被默认初始化
参数在进入函数的时候被初始化了
void f(void) 明确告诉编译器不接收任何参数
void f()表示f函数的参数表未知,并不表示没有参数
C语言不允许函数嵌套定义