一、为啥要使用函数
1、避免代码冗长
2、模块化的设计思路
3、按功能划分,每个函数代表一个功能,而函数的名字要体现函数的功能含义,类似变量标识符y=f(x)
二、函数的三要素(牢记)
函数要先定义再使用,和变量一个道理。
1、函数名——体现功能
2、参数列表(参数的个数根据需求自行定义)
比如y=f(x),x就是参数
比如z=f(x,y),x,y就是参数
initWifi(password,wifiName);
3、返回值
比如y=f(x),y是函数根据x的值和f的功能执行后的结果。
int dis;
dis=getDistance();
注:函数体——执行什么样的功能,涉及的处理代码。
main函数也是函数,下列大括号中的代码就是函数体。
#include <stdio.h>
int main()
{
return 0;
}
三、函数的定义
1、定义一个不需要返回值的函数
代码演示:
1)
#include <stdio.h>
void printWelcome()
{
printf("================\n");
printf("欢迎来到我的程序\n");
printf("================\n");
}
int main()
{
printWelcome();
return 0;
}
2)2、定义有参数有返回值的函数
1)我们只是关心数据和值,变量名没啥大的影响。
2)形式参数需要包含变量的类型,类型要匹配起来。
代码演示:
#include <stdio.h>
void printWelcome()
{
printf("================\n");
printf("欢迎来到我的程序\n");
printf("================\n");
}
//我们只是关心数据和值,变量名没啥大的关系
int getDataFromX(int data) //形式参数需要包含变量的类型,变量名。X的范围只在以下的代码中
{
int data1; //data、data1只是一个变量名,是一个局部变量,能够传递x和y的值就OK,内存虽然不一样,但是数值是一样的。
data1=2*data-1;
return data1;
}
int main()
{
int x,y; //X,y的范围只在以下的代码中
printWelcome();
puts("请输入一个数");
scanf("%d",&x);
y=getDataFromX(x);
printf("%d %d",x,y);
return 0;
}
编译结果:
3、一个返回值,两个参数(加法的实现)
代码:
#include <stdio.h>
void printWelcome()
{
printf("================\n");
printf("欢迎来到我的程序\n");
printf("================\n");
}
int add(int data1,int data2)
{
int data;
data=data1+data2;
return data;
}
int main()
{
int x,y,z;
printWelcome();
puts("请输入一个数");
scanf("%d",&x);
puts("请输入一个数");
scanf("%d",&y);
z=add(x,y);
printf("两数之和等于%d",z);
return 0;
}
编译结果:
4、定义一个空函数
int initWifi()
{
}
注:
1、常见错误,调用的时候,直接写函数名,不要带参数类型,此外,不能带变量的参数类型。总之,直接用函数名和变量名。
2、函数的封装中,可以直接用函数的表达式当成返回值,即可以直接 return data1+data2
3、函数可以当做表达式,函数调用也可当做其他函数调用的参数。