zoukankan      html  css  js  c++  java
  • 函数

    1.为什么要用函数

    每个 C++ 程序都至少有一个函数,即主函数 main() ,如果程序的代码不多,可以直接写在主函数里面,如果程序比较复杂,需要重复使用一个功能,为了在后面维护程序方便,保证程序的简洁性,高度封装性,就需要使用函数,有时需要定义类,将多个相同性质的函数放在一个类中。

    2.为什么要用函数重载

    两个以上的函数,具有相同的函数名,但是形参的个数或者类型不同,编译器根据实参和形参的类型及个数的最佳匹配,自动确定调用哪一个函数,这就是函数的重载。

    当你的参数类型或者参数个数不同,又不想写多个函数,这时候就可以用重载函数啦。对于程序的可读性有很大的好处。

    3.什么是值传递

    值传递就是字面意思,只传递值。比如说下面这行代码:

    void swap(int a,int b)
    {
        int temp;
        temp=a;
        a=b;
        b=temp;
    }
    

    的运行结果是:
    a=a;
    b=b;
    举个例子,我复印一张文件给你,你拿到的复制品可以随便修改,但是不会改变我原来文件。这里的值传递中的形参就相当于实参的复制品,不会对实参有影响。

    4.什么是地址传递

    地址传递可以这么理解,就是直接把原件给你啦。

    void swap(int *a,int *b)
    {
        int temp;
        temp=*a;
        *a=*b;
        *b=temp;
    }
    

    这个函数的输出结果是:
    a=b;
    b=a;

    5.编写递归函数

    函数可以直接或间接地调用自身,称为递归调用。

    在函数内部,可以调用其他函数。如果一个函数在内部调用自身本身,这个函数就是递归函数。
    举个例子,我们来计算阶乘n! = 1 x 2 x 3 x ... x n,用函数fact(n)表示,可以看出:
    fact(n) = n! = 1 x 2 x 3 x ... x (n-1) x n = (n-1)! x n = fact(n-1) x n
    所以,fact(n)可以表示为n x fact(n-1),只有n=1时需要特殊处理。
    于是,fact(n)用递归的方式写出来就是:

    int fact(n){
        if( n==1)
            return 1;
        return n * fact(n - 1);
        }
    
  • 相关阅读:
    Eclipse 远程调试
    大数据处理方法bloom filter
    sicily 1259 Sum of Consecutive Primes
    sicily 1240. Faulty Odometer
    sicily 1152 简单马周游 深度优先搜索及回溯算法
    sicily 1050 深度优先搜索解题
    sicily 1024 邻接矩阵与深度优先搜索解题
    sicily 1156 二叉树的遍历 前序遍历,递归,集合操作
    sicily 1443 队列基本操作
    sicily 1006 team rankings 枚举解题
  • 原文地址:https://www.cnblogs.com/simple5960/p/11504803.html
Copyright © 2011-2022 走看看