1、什么是函数
…是一种工具,能够完成独立功能的代码块,每个独立的功能都可以用一种函数去实现。避免了重复性操作,有利于程序的模块化。
/*比较2个数之间的最大值*/
#include <stdio.h>
int main(void)
{
int i,j,k,m,n,h;
i = 1,j = 2,k = 3,m = 4,n = 5,h = 6;
if(i>j)
printf("%d\n",i);
else
printf("%d\n",j);
if(k>m)
printf("%d\n",k);
else
printf("%d\n",m);
if(n>h)
printf("%d\n",n);
else
printf("%d\n",h);
return 0;
}
2
4
6
若使用函数进行书写代码:
#include <stdio.h>
void max(int a,int b)
{
if(a>b)
printf("%d\n",a);
else
printf("%d\n",b);
}
int main(void)
{
int i,j,k,m,n,h;
i = 1,j = 2,k = 3,m = 4,n = 5,h = 6;
max(i,j);
max(k,m);
max(n,h);
return 0;
}
2
4
6
可以看出实现的结果都是一样的,第二段代码利用函数将“比较2个数之间的最大值”的功能进行模块化,当进行2个数比较时,直接调用即可。
void max(int a,int b)// void是函数返回值为空值,max是函数名,int a,int b是定义函数的2个形式参数。
程序执行时,先从主函数进入,按照顺序执行,当执行到函数时,将实际参数(i,j,k,m,n,h)发送给
形式参数。然后执行函数里面的功能。
函数举例2:`
#include <stdio.h>
int f(void)//void表示此函数不能接收参数,int表示函数返回值为整型。
{
return 10;//向主调函数返回10
}
int main(void)
{
int i = 100;
i = f();
printf("%d\n",i);
return 0;
}
10
所以综上:
函数能够接收数据[当然也可以不接受数据]
能够对接受的数据进行处理
能够将数据处理的结果返回[当然也可以不返回任何值]
函数是个工具,它是为了解决大量类似问题而设计的函数可以当傲一个黑匣子
2、如何定义一个函数
格式:
函数的返回值 函数名(函数的形式参数)
{
函数的执行体
}
3、函数中return 的作用
3.1:作用1
函数返回值的类型也称为函数的类型,如果函数名前的返回值类型和函数执行体中的return表达式;中表达式的类型不同的话,则最终函数返回值的类型以函数名前的返回值类型为准。
#include <stdio.h>
int f(void)//void表示此函数不能接收参数,int表示函数返回值为整数。
{
return 10.5;
}
int main(void)
{
double i;
i = f();
printf("%lf\n",i);
return 0;
}
10.000000
3.2:作用2
如果表达式为空,则只终止函数,不向被调函数返回任何值
#include <stdio.h>
void f()
{
int i;
for(i=0 ;i<=4 ;++i)
{ printf("你好\n");
return ;//只终止函数,不向被调函数返回任何值
}
}
int main(void)
{
f();
return 0;
}
你好
4、代码案列
/*判断一个数是不是素数*/
#include <stdio.h>
void f(int j)
{
int i;
for(i=2 ;i<j ;++i)
{
if(j%i==0)
break;
}
if(j == i)
printf("是素数\n");
else
printf("不是素数\n");
}
int main(void)
{
int j;
do
{ printf("请输入:\n");
scanf("%d",&j);
f(j);
}
while(1);
return 0;
}
请输入:
25
不是素数
请输入:
33
不是素数
请输入:
6
不是素数
请输入:
5
是素数
请输入:
5、注意的问题
5.1:函数的声明
①若被调用的函数(函数的定义)在调用函数的后面,则要在调用函数前面声明被调用的函数。
②对库函数的声明是通过 #include <库函数所在文件的名字.h> 来实现的。
#include <stdio.h>
void f(void);//f()函数的声明
int main()
{
f();
return 0;
}
void f(void)
{
printf("你好\n");
}
你好
5.2:形参和实参
①形参和实参的个数和位置都要一一对应,数据类型必须相互兼容。
6、全局变量和局部变量
全局变量:在所有函数外部定义的变量
全局变量使用范围:从定义位置开始到整个程序结束局部变量
#include <stdio.h>
int k = 1;//全局变量k,其在函数f和主函数中都能使用
void f()
{
printf("%d\n",k);
}
int main(void)
{
f();
return 0;
}
#include <stdio.h>
void f()
{
printf("%d\n",k);
}
int k = 1;//全局变量k在函数f后面,所以函数f不能使用k。
int main(void)
{
f();
return 0;
}
lkm.exe - 1 error(s), 0 warning(s)
局部变量:在一个函数内部定义的变量或者函数的形参