函数在C语言的使用和编写中起着非常重要的作用,除了其中已有的函数以外,其实我们还可以自己制作自定义函数来帮助我们来进行程序的编写工作。那么我们首先要做的是要理解什么是自定义函数。下面课课家笔者就为大家具体介绍它的概念和编写方法。
所谓函数,简而言之就是一段可以重复使用的代码,用来独立地完成某个功能,它可以接收用户传递的数据,也可以不接收。
◎无参函数的定义
若是函数不接收用户传递的数据,那么我们对它定义时可以不带参数,具体如下所示:
返回值类型函数名(){
函数体
}
返回值类型可以是C语言中的任意数据类型,比如int、float、char等。函数名是标识符的一种,命名规则和标识符相同。函数名后面的括号()不能少。函数体是函数需要执行的代码。即使只有一个语句也要由{}包围。在函数体中使用return语句返回数据。下面笔者给大家定义一个函数,计算1加到100的结果,具体代码如下:
int sum(){
int i, sum = 0;
for( i=1; i<=100; i++){
sum+=i;
}
return sum;
}
计算结果保存在变量sum中,通过return语句返回。这里需要我们值得注意的地方是,由于sum为int型,所以返回值类型也必须为int,要一一对应。return是C语言中的一个关键字,只能用在函数中,用来返回处理结果。接下来我们将上面的代码补充完整:
#include
int sum(){
inti, sum = 0;
for( i=1; i<=100; i++){
sum+=i;
}
return sum;
}
int main()
{
int a = sum();
printf("The sum is %d\n", a);
return 0;
}
运行结果:
The sum is 5050
函数不能嵌套定义,main也是一个函数定义,要将sum放在main外面。函数必须先定义后使用,所以sum只能在main前面。
PS:main是函数定义,不是函数调用。当可执行文件加载到内存后,系统从main函数开始执行,也就是说系统会调用我们定义的main函数。
◎无返回值函数
有的函数不需要有返回值,或者返回值类型不确定,那么我们通常用void来表示,比如:
void hello(){
printf("Hello,world\n");
//没有返回值就不需要return语句
}
void是C语言中的一个关键字,表示空类型或无类型,绝大部分情况下也就意味着没有return语句。
◎有参函数的定义
如果函数需要接收用户传递的数据,那么定义时就要带参数,具体如下所示:
返回值类型函数名(参数列表){
函数体
}
用户数据通过“参数列表”传递给函数,供函数处理。比如定义一个函数求两个数中的最大值:
int max( int a, int b){
if(a>b){
return a;
}else{
return b;
}
}
参数(Parameter)本质上也是变量,定义时要指明参数类型和参数名称。参数列表中可以定义一个或多个参数,多个参数之间用逗号,分隔。参数列表中给出的参数可以在函数体中使用。调用max()函数时可以直接传递整数:
int n = max(10,20);
也可以传递变量:
int a = 10, b = 20;
int n = max(a,b);
也可以整数和变量一起传递:
int a = 10;
int n = max(a,20);
变量n得到的值都是20。
函数定义时给出的参数称为形式参数,简称形参;函数调用时给出的参数(传递的数据)称为实际参数,简称实参。函数调用时,将实参的值传递给形参,相当于一次赋值操作。
PS:实参和形参的类型、数目必须一致。
接下来我们将上面的代码补充完整:
#include
int max(int a, int b){
if(a>b){
return a;
}else{
return b;
}
}
int main(){
int num1, num2, max Val;
printf("Input two numbers:");
scanf("%d%d", &num1, &num2);
max Val=max(num1, num2);
printf("The max numbe r:%d\n",maxVal);
return 0;
}
运行结果:
Input two numbers:100200
The max number:200
定义max时,变量a、b的值都是未知的;调用max时,分别将num1、num2的值传递给a、b,这就类似于:
a=num1;
b=num2;
return语句可以有多个,可以在函数体的任意位置。在max中,根据if的判断结果来执行不同的return语句。函数一旦遇到return语句就返回(停止执行),后面的所有语句都不会被执行到,比如第4行代码是系统并不会执行:
int max (int a, int b){
int n=(a>b)?a:b;
return n;
printf("Functionisperformed\n");
}
以下是任意一自定义函数(与上文代码例子无关)(图1)
图1
本次C语言基础之自定义函数的教程到此就暂告一段落了,如果以后有补充的话笔者会继续在此补充,同时也欢迎大家继续补充。最后希望这次的教程对大家学习C语言能起到一定的帮助作用!
¥299.00
¥498.00
¥399.00
¥29.00