C语言 函数与递归

  • 一、函数

      1、分类:(1)库函数:IO库函数,字符串操作库函数,字符操作库函数,时间\日期库函数,数学函数,其他库函数。

                      (2)自定义函数:与库函数相同,有函数名,返回值类型和函数参数,但都又自己设计。其组成如下:

                ret_type fun_name (para1,*)
                {
                    statement;//语句项
                }
                ret_type  返回类型
                fun_name  函数名
                para1     函数参数

      2、参数:(1)实际参数(实参):真实传给函数的参数,可以是常量、变量、表达式、函数等,但在进行函数调用的时候,它们必须有确定的值,以便把这些值传给形参。

                      (2)形式参数(形参):函数名后括号中的变量,形式参数只有在被调用时才实例化(分配存储单元),当调用完        后会自动销毁,因此形参只在函数中才有效。

                        注:形参实例化之后其实相当于实参的一份临时拷贝。

      3、调用:(1)传值调用:函数形参与实参占有不同的内存块,对形参的修改不会影响实参。

                      (2)传址调用:把函数外部创建变量的内存地址传递给函数参数的一种调用函数的方式,即可在函数内部直接操作函数外部的变量。

void Swap1(int x,int y)
{
    int tmp = 0;
    tmp = x;
    x = y;
    y = tmp;
}

void Swap2(int* px,int* py)
{
    int tmp = 0;
    tmp = *px;
    *px = *py;
    *py = tmp;
}

int main()
{
    int a=10;
    int b=20;
    printf("a=%d,b=%d\n",a,b);
    Swap1(a,b);//传值调用
    Swap2(a,b);//传址调用
    printf("a=%d,b=%d\n",a,b);
    
    //int a = 10;
    //a = 20;

    //int* p = &a;
    //*p = 20;

    system("pause");
    return 0;
}

      4、函数之间可以嵌套调用以及链式访问。

     eg:   printf("%d",printf("%d",printf("%d",43)));
                   //1         //2        //43
           
           最终输出结果为:4321

      5、(1)函数声明:告诉编译器函数的返回类型、函数名和参数,但具体是否存在无关紧要,函数声明一般在定义之前,先声明后使用,其声明一般要放在头文件中。

           (2)函数定义:函数的具体实现,交代函数的功能实现。

            #ifdef  __TEST_H__
            #define __TEST_H__
            //函数的声明
            int Add(int x,int y);
            #endif //__TEST_H__

     6、具体实例:参照本人博客《C语言 Example 四》。

  • 二、递归

             1、递归:程序调用自身的编程技巧。思考方式为:大事化小。

             2、递归的两个必要条件:(1)存在限制条件,当满足这个限制条件时,递归不在继续。(2)每次递归后越来越接近这个限制条件。

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值