设计函数:
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] 这种数组类型
数组名 代表的值---首元素的地址(数组所占内存空间的首地址)