您好,欢迎来到花图问答。
搜索
您的当前位置:首页C语言的函数(第二篇章:函数的传值与传址和函数的调用)

C语言的函数(第二篇章:函数的传值与传址和函数的调用)

来源:花图问答

一、函数的传值与传址

说起函数的传值与传址,外表看起来很高大上的样子,其实本质是都是传递一个数值而己。

  • 在这里引入两个概念,就是函数的的两类参数。分别为:形式参数(形参)和实际参数(实参)。函数定义时的参数称为形参,函数调用时使用的参数称为实参。(第二点讲函数的调用也会用到这两个概念的。)

  • eg:使用函数交换两个变量的值。(这里给个例子吧。详细的会在注释标出。)

    #include <stdio.h>
    int main(void)
    {
    int a = 4; int b = 5;  
    printf("a = %d b = %d\n",a,b); //定义两个变量
    int t = a;                                //swap的传值
    a = b;                                    //进行了有参交换
    b = t;                                    //对swap功能进行打包
    printf("a = %d b = %d\n",a,b);
    return 0;
    

    }

二、函数的调用

函数调用的一般形式有两种:

  • 1函数语句 :
    函数名 (实参表列); 或 函数名();[不要求函数带返回值]
    eg:swap(x,y);

  • 2函数表达式:
    m=max(a,b);

  • 3函数的嵌套调用:
    虽然现在的IDE(集成开放环境)平台有的允许嵌套定义的,但函数不能嵌套定义,为了考虑兼容的问题,一般都不建议去嵌套定义的。
    C语言允许进行嵌套调用。eg:
    #include<stdio.h>
    fun2(int x,int y)
    {
    int z;
    z=2*x-y;
    return z;
    }
    fun1(int x,int y)
    {
    int z;
    z=fun2(x,x+y); //在fun1()内调用fun2()函数
    return z;
    }
    main()
    {
    int a,b,c;
    printf("Please input two number:");
    scanf("%d%d",&a,&b);
    c=fun1(a,b); ///调用fun1()函数
    printf("%d\n",c);
    }

  • 4函数的递归调用
    定义:在调用一个函数的过程中,又直接或者间接地调用了该函数本身,这种形式称为函数的递归调用,这个函数就称为递归函数。
    其实就是一句话:自身调用自身
    一般的形式为:
    递归返回func(满足递归的条件)
    {
    if(能使递归终止条件)
    终止处理;
    else
    func(趋于递归终结的条件);
    }
    举个例子:用递归方法求n!(n>0)。
    include<stdio.h>
    long func(int n) //定义求阶乘的函数 func()
    {
    long m;
    if(n==1)
    m=1;
    else
    m= func(n-1)* n; //在函数的定义中又调用了自己
    return m;
    }
    main()
    {
    int n; float y;
    printf("input the value of n.\n");
    scanf("%d",&n);
    printf("%d!=%ld\n",n, func(n)); /输出n!
    }

Copyright © 2019- huatuowenda.com 版权所有 湘ICP备2023022495号-1

违法及侵权请联系:TEL:199 1889 7713 E-MAIL:2724546146@qq.com

本站由北京市万商天勤律师事务所王兴未律师提供法律服务