• 函数


    函数概述

    函数可以看作是“黑盒子”,对应的输入会产生特定的结果或是返回某个数值,而其内部行为不需要考虑

    函数调用各部分:

    1. 函数原型:告知编译器函数类型,可以放在main函数之前,也可以放在main函数内部
    2. 函数调用:导致函数的执行
    3. 函数定义:指定函数的具体功能

    形参与实参:

    1. 形式参量是局部变量,是被调函数中的变量。在函数的原型中可省略形参名
    2. 实参是调用函数分配给被调函数的特定数值,无论何种形式的实参,执行时首先要求出其值,然后将该值复制给被调函数中相应的形参

    ANSI C函数原型

    为什么需要在函数原型中指明参数个数和类型?

    不指明时的参数传递过程:

    1. 调用函数根据实参类型,将相应的实参放入堆栈
    2. 被调函数根据形参类型,从堆栈中读取数据
    3. 编译器不会检查参数类型!!

    如果不确定参数的个数,如printf()

    int printf(char *, ...);
    

    递归

    递归的基本原理

    1. 每一级函数调用都有自己的变量
    2. 每一次函数调用都会有一次返回,即返回到上一级的调用语句后,继续执行
    3. 位于递归调用的语句和各级被调函数的顺序相同
    4. 位于递归调用的语句和各级被调函数的顺序相反

    尾递归

    定义:把递归调用语句放在函数结尾,即return语句之前。是最简单的递归形式

    递归和反向计算

    例:编写一个函数将一个整数转换成二进制形式

    解决:在递归调用前求出n%2的值,在递归语句之后进行输出。临界条件是,n<2时,n%2即为n,故直接输出

    void to_binary(int n){
    	int r;
    	r=n%2;
    	if(n>=2) to_binary(n/2);
    	putchar('0'+r);
    	return;
    }
    
  • 相关阅读:
    jemter 90%line的解释
    JMeter 不同线程组间变量传递(亲测 ok)
    nginx的url规则小tips
    redis水平扩展实践,完全配置,无需代码改动
    基于nginx + lua实现的反向代理动态更新
    基于redis 3.x搭建集群环境
    简单监控脚本细节分析
    简单的应用服务器性能监控
    Elasticsearch的脚本化数据导入导出
    A* search算法
  • 原文地址:https://www.cnblogs.com/xkf97/p/12586268.html
Copyright © 2020-2023  润新知