第四章 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