八.函数
函数 --- 实现某一个功能的
函数的定义: //实现函数
类型标识符 函数名(形式参数)
{
声明部分
语句部分
}
(1).类型标识符 (返回值的类型标识符)
(2).函数名 --- 一般和函数功能对应
(3).形式参数 --- 函数接收数据的入口
形参 --不是一定要有
看函数功能的需要
形参没有,一般写成 void
形参:(本质是变量)
与实参
a.个数相同
b.类型匹配
c.与实参匹配顺序 //从右向左 在ubunt18.04平台上顺序是从右向左
(4).函数体 --- 完成函数具体功能的代码
(5).返回值 返回值如果没有,返回值类型 一般写成void
返回的结果的类型 与 定义返回值类型 不一致 ,以定义的返回值类型为准
返回值的类型如果不写,默认为int
函数定义的位置:
1.main函数之前
2.main函数之后
函数的声明
函数头 + 分号
函数声明可以放的位置,
使用之前
函数调用的形式:
add(a,b); // 函数调用语句
int ret;
ret = add(a,b); //函数调用在表达式中
ret = add(a,b) + 3; //表达式的一部分
//函数调用作为某个函数的实际参数
printf("sum = %d\n",add(a,b));
返回值的类型标识符 函数名(形式参数) //函数头 --规定了一下函数的形式
{
函数体 //--实现函数具体功能代码
返回结果 //return 返回结果
}
strcpy(s1,s2); //实际参数
//功能:
求和
准备数据:
准备两个数据 --- 形式参数要能接收两个数据 ---本身其实就是变量
处理数据:
a+b
返回结果:
return
函数名:
add
形式参数:
int a,b; //形参不能这样写
数据类型 形参变量名1,数据类型 形参变量名2,...
int a,int b
函数功能:
a+b
结果:
return 结果;
函数调用:
语法:
函数名(实际参数);
栈:
特点:先进后出(FILO)//First In Last out
Linux系统上,默认情况下8M,大小可以调整
主要:局部变量
自动申请 自动释放
int a;
堆:
特点:大; 手动申请 手动释放
字符串常量区:
char s[10] = “hello”
全局区(静态区)
全局变量(静态变量)
代码区
程序 = 代码 + 数据
内存的5个区
函数的嵌套调用:
特殊的嵌套调用:---递归(自己调用自己)
递归 --就是循环
直接递归
间接递归
while(1)//死循环
{}
递归:
1.//sum()
递归来实现: //倒着来
2.算法
写出代码:
1.递推关系 //重复的
第n项 与 第n-1项之间的关系
2.结束条件