zoukankan      html  css  js  c++  java
  • 我也要学C语言第八章:流程控制与函数机制

    一:流程控制

      今天我学流程控制啦!练习了三种程序流程控制3小时。在学习的过程中,我看到了一句话“顺序,分支,循环可以描述任何的算法。”看来如何把问题用,顺序,分支,循环去描述了就可以说是一个问题的算法了。说明啦!流程控制需要大量的去练习各种算法了。所以这个要学好只有狠下功夫了哦!

    二:函数

      1:函数的声明:函数返回值 函数名(形式参数类型........)

             {

                  函数的代码块

                  如果需要的话,还需要return (表达式)

              }

      2:函数的作用:把细节封装啦!因为你需要1个功能的函数,只要看此函数的声明就知道了。因为一般好的函数的函数名都很有涵义,一看就知道他是做什么的了,实现了模块化编程。而且函数可以重复的用,就像吃饭的碗啊!只要没坏,每顿饭都可以拿同一个碗来装饭。而且啊!每个“碗”也是独立的,洗完的时候是一个一个洗的,有些“脏(bug)”1点就多洗下啦!

      3:形参和实参:函数定义的时候所接受的参数叫形参;调用函数时候给函数的值是实参。

      3:函数的运行机制

         值传递:

    #include <stdio.h>

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

    int main(void)
    {
    int i =0;
    int j =1;

    change(i, j);

    printf(
    "i=%d", i);
    printf(
    "j=%d", j);

    return (0);
    }

    嘿嘿!我想呢!这样就交换了2个变量的值啦!但是结果很郁闷啊!并没有交换!怎么回事啊!干脆调试1下看看喏!

    现在马上就要进入交换函数了哦!

    哦!原来是这样啊!看看啊!形参a,b和实参ij的地址是不一样的啊!交换的只是复制品!克隆人!仔细看,实参和形参原来只是值一样,地址不一样的哦!如果交换的只是形参和实参一点关系都没有啊!就像好多坏孩子,她想要诅咒人,她就去买个小娃娃,把这个小娃娃当着是她讨厌的人!然后每天不停的对着这个娃娃去诅咒,以为这样就可以让别人倒霉。唉!其实她的诅咒一点作用都没有!我以前以为真的有用呢,现在学了函数,我觉得真的没用的哦!o--o!以前的scanf为什么要取地址原来也是这个原因啊!

      既然函数是这样子交互的,那就可以总结1下函数的调用过程了!

      1:参数的复制(把“仇人的主要特征用“本本”记下来”)

      2:保存返回地址(当买了“娃娃”后,担心自己不是那么的坏,或者有一天会把“娃娃”送给商家!所以记下商家的详细地址!)

      3:开辟内存空间(当买了个”娃娃“后,它就会占用一定的宇宙空间啊)

      4:规划局部变量(然后给"娃娃"打扮下,让看起来更像那个人,而且准备好"道具"去诅咒它!画个圈圈什么的,呵呵!)

      5:执行函数体代码(然后就开始“诅咒”啦!)

      6:撤销内存空间(嗯!诅咒累了!唉!觉得这样真的不是好孩子啊,还是把娃娃送还给商家啦!)

      7:取得返回地址(突然有一天意识到这样做是不正确的,就准备把“娃娃”送还给商家了!所以拿出以前"本本"记下的商家详细地址!)

      8:参数的内存空间撤销(唉!既然要重新做个好孩子,那么把以前的那个“本本”也仍了吧!)

    三:仍“本本”的人(参数的内存空间撤销---vc6.0中在Project Settings中的c/c++的Calling convention中设置(又叫调用约定))

      仍“本本”的这个事啊,其实也可以有几种方式了呢!

        1:把这个本本让商家帮我“仍”了吧!这样“商家”(函数的调用方)就知道以前是个坏孩子,现在要该过自新!这样,“商家”就可以见证我的改过了哦!而且商家也知道了这个孩子以前坏在哪里,买了几个娃娃(参数个数)这样下次这个孩子又想买娃娃的       时候,说不定她更坏了啊,要买很多个娃娃,所以商家把娃娃的货进得老足老足的了。要多少个都可以(printf,scanf多参函数)!—— _cdecl

        2;3: _fastcall和_stdcall 这2个方式呢!仍“本本”就自己去仍了,这样丢脸事还是不告诉别人的好。嘿嘿!

  • 相关阅读:
    (作业3)Linux内核的启动过程(从start_kernel到init进程启动)
    (作业2)mykernel实验指导(操作系统是如何工作的)
    (作业1)将一个简单的C程序编译成汇编代码,讨论计算机是如何工作的进行
    中国大学MOOC-数据结构基础习题集、09-3、Hashing
    中国大学MOOC-数据结构基础习题集、09-2、QQ帐户的申请与登陆
    中国大学MOOC-数据结构基础习题集、09-1、Hashing
    中国大学MOOC-数据结构基础习题集、08-3、Sort with Swap(0,*)
    中国大学MOOC-数据结构基础习题集、08-2、The World's Richest
    中国大学MOOC-数据结构基础习题集、08-1、Talent and Virtue
    中国大学MOOC-数据结构基础习题集、07-2、Insert or Merge
  • 原文地址:https://www.cnblogs.com/dodolook/p/2056197.html
Copyright © 2011-2022 走看看