学习嵌入式的第十天----函数调用,递归

设计函数:

1.能拆成函数的尽量拆成函数

2.函数设计时,尽可能考虑健壮性,扩展性

函数调用的关系:

调用者

被调用者

 eg:  int main(void)

{  printf(“%d\n”,getMonthDays() )

         return 0; }

在这里面:main成为调用者,main函数是整个程序的入口,只能调用者

getMonthDays----在此处是被调用者

函数调用的本质:实际上是利用栈的结构---先进后出,保证了函数可以层层嵌套调用

栈:

数据结构---(表示数组组织形式)

特点:先进后出(First In Last Out)//FILO

c语言角度的栈: 1.本质上是一块内存空间  2.只是按照栈 这种数据结构 来处理和使用的

栈:局部变量// 空间自动申请 自动释放

c语言程序把内存划分了五个区域---(1. 栈---主要用来存放,自动变量或函数调用的数据; 2.堆----空间大 堆上的空间 手动申请,手动释放 ;3.字符串常量区---"hello"(只读) ; 4.静态区(全局区)---全局变量和静态变量 ;  5.代码区---只读的

程序=代码+数据

特殊嵌套调用---递归

递归: 自己调用自己

直接递归

间接递归

类似循环---递归是一种特殊的循环

递归思路:求问题n ,依赖于问题n-1的解决

递归代码实现思路:

1.递推关系---怎么从问题n 到问题n-1

eg:100求和

sum(100)--->sum(99)+100

sum(99)--->sum(98)+99

sum(n)--->sum(n-1)+n

2.递推结束条件

n=1

3.代码

数组作为函数参数:

1.数组元素作为函数参数

2.数组本身作为函数参数

总结:

1.一维整型数组做函数参数

形参---写成数组形式, 还需要数组长度

实参:数组名,数组长度

eg:  printArrray(int a [ ], int len)//形参

调用----printArray(a, len);

int a [10]; 

数组名  代表类型---int [10] 这种数组类型

数组名 代表的值---首元素的地址(数组所占内存空间的首地址)

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

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值