------Java培训、Android培训、iOS培训、.Net培训、期待与您交流! -------
函数
函数是复用的一种机制(官方)
函数就是一段代码的打包
语法:
返回值类型 函数名 ( 参数类型 参数名, 参数类型 参数名, ... ) {
函数体, 就是打包的代码
}
在 C 语言中, 函数不允许定义在函数内部
func(); 调用 func 函数, 就是执行名字为 func 函数中的代码
void getSum1(int num1, int num2) {
int res = num1 + num2;
printf("%d + %d = %d\n", num1, num2, res);
}
这个函数限制了输出结果的环境
如果希望在别的地方也可以显示结果, 那么就需要函数得到计算的结果, 有专门的输入函数进行输出
int getSum(int num1, int num2) {
int res = num1 + num2;
return res; // 利用 return 语句返回 res 的结果
}
#include <stdio.h>
int main(int argc, const char * argv[]) {
int n = 111;
int m = 222;
int res = getSum(n, m);
printf("%d\n", res);
return 0;
}
2.返回值类型的说明
1> 函数前面写的 int 表示函数执行完成以后会得到一个 int 类型的数据
在函数中, 需要使用 "return 数据" 结束函数
int func2() {
// return 123;
return 'a';
}
在 return 后面写的东西, 是什么表示函数执行完成后会得到什么结果
2> 函数前面写void 的表示没有返回值
void func1() {}
int main(int argc, const char * argv[]) {
// int num = func1();
// 错误, 函数前面写 void 表示函数执行完没有结果, 即没有返回值
int num = func2();
printf("%d\n", num);
return 0;
}
3.函数的声明
所谓的函数声明, 就是在函数调用以前将函数的格式写出开
以便告诉编译器后面要执行该函数
函数声明
void printSum(int num1, int num2); // 函数头, 函数声明
在标准 C 中, 常常使用下列步骤处理函数头
>1 去掉所有的 参数 的名字
void printSum(int, int);
> 2 在函数的前面加上 extern (略)
extern void printSum(int, int);
extern 表示该函数不是在当前文件中定义的
implicity 隐式的
explicity 显式的
4 多文件开发
在 C 语言开发中, 有一个规范
一个 .c 文件是一类非常紧密关系的函数集
一般使用功能性的名字作为文件名
math.h -> math.c
stdio.h -> stdio.c
stdlib.h -> .stdlib.c
#include
1>尖括号表示从系统路径下进行寻找头文件 #include <>
2>双引号表示从当前文件夹路径开始找文件, 如果找不到再到系统路径下寻找 #include " "
5 函数的递归
递归, 所谓的函数递归就是指, 函数自己调用自己, 或间接调用自己
void func() {
func(); // 自己调用自己
}
void func2();
// 间接的调用自己
void func1() {
func2();
}
void func2() {
func1();
}
1>程序设计中递归结构常常使用在算法设计的初始阶段
算法设计中常常利用相关递推关系设计递归结构
而算法实施的时候, 常常又将递归转换成非递归结构, 以提高效率