嵌入式学习第十天

一.函数

(1)一个 C 程序由一个或多个程序模块组成,每一个程序模块作为一个源程序文件。对较大的程序,一般不希望把所有内容全放在一个文件中,而是将它们分别放在若于个源文件中,再由若干个源程序文件组成一个C程序。这样便于分别编写、分别编译,提高调试效率。一个源程序文件可以为多个C程序共用。
(2)一个源程序文件由一个或多个函数以及其他有关内容(如命令行、数据定义等)组成。一个源程序文件是一个编译单位,在程序编译时是以源程序文件为单位进行编译的,而不是以函数为单位进行编译的。
(3) C程序的执行是从main函数开始的,如是在main函数中调用其他函数,在调用后流程返回到 main 函数,在 main 函数中结束整个程序的运行。
(4)所有函数都是平行的,即在定义函数时是分别进行的,是互相独立的。一个函数并不从属于另一个函数,即函数不能嵌套定义。函数间可以互相调用,但不能调用main函数。main函数是系统调用的。
(5)从用户使用的角度看,函数有两种。
①标准函数。标准函数即库函数,它是由系统提供的,用户不必自己定义而直接使用它们。应该说明,不同的 C 语言编译系统提供的库函数的数量和功能会有一些不同,当然许多基本的函数是共同的。
②用户自己定义的函数。它是用以解决用户专门需要的函数。
(6)从函数的形式看,函数分两类。
① 无参函数。如例 8.1 中的 printstar 和 print_message 就是无参函数。在调用无参函数时,主调函数不向被调用函数传递数据。无参函数一般用来执行指定的一组操作。例如,例 8.1 程序中的 printstar函数的作用是输出 16 个星号。无参函数可以带回或不带回函数值,但一般以不带回函数值的居多。
②有参函数。在调用函数时,主调函数在调用被调用函数时,通过参数向被调用函数传递数据,一般情况下,执行被调用函数时会得到一个函数值,供主调函数使用。

 二.定义函数

1.定义无参函数

函数名后面的括号中是空的,没有任何参数。

类型名  函数名()

{

   函数体

或者

类型名  函数名(void)

{

  函数体

}

函数名后面的括号的void表示空,即函数没有任何参数。

函数体包括声明部分和语句部分,在定义函数时要用“标识符”即类型名指定函数值的类型,即指定函数带回来的值是什么类型。

2.定义有参函数

类型名  函数名 (形式参数表列)

{

   函数体

}

在调用函数时,主调函数把实际参数的值传递给被调函数中的形式参数。花括号内的时函数体,它可以包括声明部分和语句部分。声明部分包括对函数中用到的变量进行定义以及对要调用的函数进行声明,return(z)的作用是将z的值作为函数值返回带回主调函数。

三.形式参数和实际参数

在调用有参函数时,在定义函数时的函数名后面的变量名称为“形式参数”,在主调函数中调用一个函数时,函数名后面中的参数称为“实际参数”,实际参数可以是常量,变量或者表达式。

实参和形参必须个数相同类型匹配

四.函数的返回值

1.函数的返回值是通过return语句得到的。

2.在定义函数时指定的函数类型一般应该和return语句中的表达式类型一致。即函数类型表达式决定返回值的类型。 

3.若无返回值则结果不确定。

五.值传递

c语言中,无法在被调函数中修改主调函数的值,在传参的过程中,默认自右向左。

六.函数的底层调用

七.递归调用

在调用一个函数的过程中有出现直接或间接地调用该函数本身,称为函数的递归调用。

他不是一个死循环因为他会一直消耗栈区空间,将栈区空间消耗完后会导致程序崩溃。 

八.一些算法

定义一个函数

求和递归

递归斐波那契数列

汉诺塔递归法

  • 5
    点赞
  • 8
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值