第十五章 函数
1.C 语言中子程序称为函数。
2.C 语言是面向函数的,C 程序本质上是函数的集合,每条语句属于并仅属于一个函数。
3.C 语言程序总是从 main 函数开始,在 main 函数中调用其他函数,这些函数也可以依次调用更多函数,控
制最终会返回 main 函数,main 函数结束时程序结束。
4.函数声明称为函数原型,包括函数名称、返回值类型、输入值列表,以分号;结束。
5.没有返回值的函数返回值类型为 void。
6.函数名称按标识符命名规则。
7.帕斯卡命名法:单词首字母大写 ,其余部分小写。
8.骆驼式命令法:单词首字母大写,其余部分小写,但第一个单词首字母小写。
9.下划线法:函数名中的每一个逻辑断点都有一个下划线来标记。
10.函数声明括号中描述函数需要输入的参数的类型和顺序,可以不指明参数名而只写参数类型,参数名也
可以与函数定义时的形式参数不同。不需要参数时括号里为空。
10.在调用者内部被传给被调用者的值被称为变元。
11.函数定义括号中的是形式参数列表,变元与形式参数类型和顺序匹配。
12.任何调用者的局部变量对被调用函数不可见。
13.用 return 指明返回的值,必须与声明返回的类型匹配。
14.若有返回值的函数没有使用 return 语句,则最后一条语句的值作为返回值返回给调用者。
15.函数定义在函数调用前,可以不使用函数声明。
16.变元运算顺序自右向左。例:function(i,i++);。
17.一个函数能被任何一个函数调用(包括其本身)。
18.C 函数在 DLX 底层实现时,参数个数若多于 4 个将使用存储器,且使用运行时栈机制,这段存储空间称
为函数的栈框架或活动记录。
19.编译器为每一次函数调用,在存储器中分配一个活动记录;当函数返回时,它的活动记录将被回收,以
便分配给后面的函数;每一次函数调用都会在存储器中为其局部数值获得它自己的空间。优点:允许函数
递归。
20.R29 栈指针指向栈顶,R30 框架指针指向活动记录底。
21.动态链接:为调用者的框架指针制作的副本。
22.叶函数:在执行过程中没有调用其他函数的函数,且没有改变 R31。
23.头文件包含函数声明,预处理宏,但不包含库函数的源代码,即头文件已编译。
24.数学库函数使用头文件 math.h。
25.printf 函数格式说明少于参数时,将使用期望在存储器指定位置的垃圾值。
26.scanf 函数返回值为该函数在输入流中成功扫描的格式说明的个数。
27.将 C 语言函数调用翻译为 DLX 汇编语言
①通过栈指针 R29 对局部变量 R16-R23、临时寄存器 R8-R15、R24、R25、参数传递寄存器 R2、R3 压栈
(只对将要修改但还需使用的寄存器压栈)。
subi r29 r29 #4
sw 0(r29) SR1
subi r29 r29 #4
sw 0(r29) SR2
……
subi r29 r29 #4
sw 0(r29) SRn
评论0