zoukankan      html  css  js  c++  java
  • 第四章 C语言函数调用以及C语言机器运行模型

    学习要点:
    4.1 C语言的函数;
    4.2: C语言的函数调用;
    4.3: C语言命名规范;
    4.4: C语言计算机运行模型;
    4.5: C语言示例代码运行详情剖析;


      4.1 C语言的函数
        1:函数是完成特定功能的代码块, 用户给出相应的输入,经过函数模块后得到返回值。
       2: C语言程序设计里面,函数名称要能藐视这个函数的名称,函数的参数要能描述这个参数的作用;
        好的代码不需要注释,因为函数以及参数的命名足以说明一切,例如void setPostion(float x, float y),这个还需要注释么?
       3: 单个的C语言函数的代码量不宜过长,维持在100行以内;
       4: 一个.c文件我们会称为一个模块或某个模块的一个部分;
        如果函数定义在.c内部,我们称为内部函数,如果定义在某个模块的外部,我们称该函数为此模块的外部函数;
       5: 注意,一般.c文件的命名要与模块的功能想似,.h文件的命名一般和.c文件使用同样的名称;

     

      4.2: C语言的函数调用

        1: 使用变量保存返回值:
        变量 = 函数名称(参数1, 参数2, ...)
        变量的类型一定要和返回值的类型是一致的;

        2: 无返回值或不管返回值:
        函数名称(参数1, 参数2, ...)
        在传参数的时候,我们传的参数的个数,以及每个参数的类型都要与函数定义的的参数类型相当;

      4.3: C语言命名规范
        1: 匈牙利命名法: -- windows代码常用的规范
        主要特点:
        a: 函数名称单词与单词之间大写例如 SetPosition;
        b: 变量名称加上类型的说明,例如 指针 pData等;
        具体参见匈牙利命名规范;

        2: 驼峰命令规范: --在java与游戏编码中很流行
         命名有单词组成,第一个单词的第一个字母小写,后面每个单词都大写,cocos 就使用这样的编码规范,java语言也是一样的;例如 setPosistion, setName, getType, fullPath等等;

        3: linux命名规范: --在linux gnu的C/C++语言中广泛使用。
         特点是函数或变量名称的单词之间使用下划线,例如:
          set_postion(); full_path, 等

        4:命名规范是项目组规定的,统一就好,每家公司有每家公司的命名规范,比如华为,百度,阿里, 腾讯都有内部的命名规范;
          a.要英文,不要拼音。

      4.4: C语言计算机运行模型
        1: 我们现在学习了,函数,函数调用,表达式,局部变量,函数返回。对于程序代码,操作系统专门在内存里开一个区域来存放代码指令,所以这个段内存,我们叫做代码段, CPU根据一个指令

          指针来取当前指令,执行完后,指令指针移动到下一条指令(顺序执行),或跳转到指定的指令(条件,循环)。

        a: 每个函数是一个独立的代码片段,在代码段中;
        b: 有一个指令指针,来决定当前CPU执行的指令;
        如图

          

        2:函数运行时的参数以及局部变量的内存分配是放在栈上的,操作系统也将内存开一个段出来做运行时栈的使用,

          栈有一个栈顶指针, 来表示现在栈上的最后一个元素, 定义一个局部变量或参数,那么将栈顶指针都会往下移动,分配出变量所需要的内存;如图:

          

     

        3: 调用函数,将指令指针移动到被调用的函数代码段;
        4: 函数返回,将返回值保存到一个寄存器里面,然后将指令指针拨回调用函数的下一个指令;
        5: 以后会学习动态内存分配,全局变量等,我们再扩充模型;


      4.5: C语言示例代码运行详情剖析

        1: 代码如下:
        int sum(int a, int b) {
        int r = a+b;
        return r;
        }
        int main(int argc, char** argv) {
        int a = 3;
        int b = 4;

        int c = sum(a, b);
        return 0;
         }
    https://ke.qq.com/webcourse/index.html#course_id=108536&term_id=100115490&taid=354888852809720&vid=s1407r1ykpu

  • 相关阅读:
    sqlserver,获取调用存储过程返回数据的方法。
    手动为弹窗添加一个阴影背景。
    bootstrap资料链接
    进入Linux救援(rescue)模式的四大法门
    virtual box 5.2.12 扩展包安装
    pypi配置国内开源镜像
    vs2015利用python加载dll调试配置
    ubuntu18安装ubuntu kylin软件中心
    firefox快捷键窗口和标签类
    设置双网卡路由
  • 原文地址:https://www.cnblogs.com/liangjinjie/p/8111455.html
Copyright © 2011-2022 走看看