美文网首页
C 定义函数(初步)

C 定义函数(初步)

作者: 2010jing | 来源:发表于2016-06-15 21:06 被阅读25次

    输出函数printf,输出函数的作用不是算出结果,而是产生输出的效果。
    看个小例子
    假设有一堆圆形的瓷盘,需要求他们的面积。
    他们的半径分别是,3.21、2.15、3.33、3.56

    #include<stdio.h>
    int main(){
        printf("area = %f\n",3.12*3.12*3.14);
        printf("area = %f\n",2.15*2.15*3.14);
        printf("area = %f\n",3.33*3.33*3.14);
        printf("area = %f\n",3.56*3.56*3.14);
        
        return 0;
    }
    

    我们可能会写出如上的程序, 但是在这个程序里有许多相同的东西。不仅其中对各项数据的计算过程相同,而且同一个数据还需要重复出现。 如果这个时候有一个专门的函数来计算这个面积,只需要告诉它半径是多少,就可以返回给你一个结果,是很省事的事情。
    猜想如果这个函数是这样子的
    float circle_area(float r)
    float 是对这个函数 circle_area 的返回值类型,
    float r 是传给这个函数的参数,类型是float
    现在来写写circle_area(float r)的业务逻辑

    float circle_area(float r){
        return r * r * 3.1416;
    }
    

    很简单,就是将计算结果返回回来。
    现在我们再来看看优化过的程序后,

    #include<stdio.h>
    
    float circle_area(float r){
        return r * r * 3.1416; 
    }
    
    int main(){
        printf("area = %f\n",circle_area(3.12));
        printf("area = %f\n",circle_area(2.15));
        printf("area = %f\n",circle_area(3.22));
        printf("area = %f\n",circle_area(3.56));
    
        return 0;
    }
    

    我们可以把一段计算过程定义成一个函数,并给它取一个名字。有了这样的函数定义之后,如果程序里需要这样的一段计算,那么久可以简单地通过函数的名字调用这个函数,然后做有关的逻辑运算。

    这个程序就包括了两个部分:前面是circle_area的定义,后面就是我们熟悉的main函数,main函数内调用了前面定义的circle_area函数。

    定义一个circle_area 函数会带来很多益处。比如,函数调用一目了然,参数也只需要填写一次。更重要的是如果万一业务逻辑发生变化,程序需要改变,我们只需要在调用函数那里稍作修改。

    我们继续来猜想一下之前的例子
    如果说是有 10000 个瓷盘,

    #include<stdio.h>
    int main(){
        printf("area = %f\n",3.12*3.12*3.14);
        printf("area = %f\n",2.15*2.15*3.14);
        printf("area = %f\n",3.33*3.33*3.14);
        //这里省略9996条 printf 语句
        //...
        //...
        printf("area = %f\n",3.56*3.56*3.14);
        return 0;
    }
    

    现在程序需求出现变化, 在计算面积完之后还要加上额外的50.0 这个时候你得在程序10000个 输出语句那里都得加上 + 50.0

    printf("area = %f\n",3.33*3.33*3.14 + 50.0);
    

    如果真的是这样手动这样操作10000次,想想都是醉了。
    然而,幸好我们定义一个circle_area函数, 我们只需要在里面稍作修改就完事。

    float circle_area(float r){
        return r * r * 3.1416 + 50; 
    }
    

    我们仅仅只需要在cirle_area 里面 修改为 return r * r *3/1416 +50.0 就可以了, main 函数内的,完全不需要修改。

    如果某天,boss觉得 pi = 3.1416 不够精确, 需要更精确的 3.141592 ,这个时候 我们也只需要在circle_area函数内修改一次就可以。

    相关文章

      网友评论

          本文标题:C 定义函数(初步)

          本文链接:https://www.haomeiwen.com/subject/vompdttx.html