C语言函数
                                                                              
               作者:任尚益
 
                                                                            
(邮箱:[email protected])
 
                                                                              
         请勿转载,支持原创
函数(Function)是一段可以重复使用的代码,这是从整体上对函数的认识。
 C语言本身带了很多库函数,并分门别类地放在了不同的头文件中,使用时只要引入对应的头文件即可。
 除了C语言自带的函数,我们也可以编写自己的函数,称为自定义函数(User-Defined 
Function)。自定义函数和库函数没有本质的区别,表现形式和使用方法一样,只是开发者不同而已。
 这一章我们就来讲解如何编写和使用自己的函数。
 
参数
函数的一个明显特征就是使用时带括号( ),必要的话,括号中还要包含数据或变量,称为参数(Parameter)。参数是函数需要处理的数据,例如:
 
 * strlen(str1)用来计算字符串的长度,str1就是参数。 
 * puts("任")用来输出字符串,"任"就是参数。 
返回值
既然函数可以处理数据,那就有必要将处理结果告诉我们,所以很多函数都有返回值(Return Value)。所谓返回值,就是函数的执行结果。例如:
char str1[] = "C Language"; int len = strlen(str1); 
 
 
strlen() 的处理结果是字符串 str1 的长度,是一个整数,我们通过 len 变量来接收。
 
 
函数返回值有固定的数据类型(int、char、float等),用来接收返回值的变量类型要一致。
如果函数不接收用户传递的数据,那么定义时可以不带参数。如下所示:
 返回值类型  函数名(){
     函数体
 }
 说明:
 返回值类型可以是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 <stdio.h>
 int sum(){
     int i, 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 前面。
 注意: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。
 
函数定义时给出的参数称为形式参数,简称形参;函数调用时给出的参数(传递的数据)称为实际参数,简称实参。函数调用时,将实参的值传递给形参,相当于一次赋值操作。注意:实参和形参的类型、数目必须一致。
 将上面的代码补充完整:
 #include <stdio.h>
 int max(int a, int b){
     if (a>b){
         return a;
     }else{
         return b;
     }
 }
 int main(){
     int num1, num2, maxVal;
     printf("Input two numbers: ");
     scanf("%d %d", &num1, &num2);
     maxVal = max(num1, num2);
     printf("The max number: %d\n", maxVal);
     return 0;
 }
 运行结果:
 Input two numbers: 100 200
 The max number: 200
 定义max时,变量a、b的值都是未知的;调用max时,分别将num1、num2的值传递给a、b,类似于:
 a=num1;
 b=num2;
 return 语句可以有多个,可以在函数体的任意位置。在max中,根据 if 的判断结果来执行不同的 return 语句。
 函数一旦遇到 return 语句就返回(停止执行),后面的所有语句都不会被执行到,例如:
 纯文本复制
 int max(int a, int b){
     int n = (a>b) ? a : b;
     return n;
     printf("Function is performed\n");
 }
 
 
热门工具 换一换
