函数
一、函数:
形参:定义函数的时候函数名后面小括号中的参数,称之为形参。
实参:调用函数的时候传入的参数,称之为实参。
一个函数可以有形参也可以没有形参。
注意:
1.形参变量名不能相同
2.在函数体中也不能定义和形参变量名相同的变量
3.实参的个数必须和形参相同
4.基本数据类型作为函数参数传递的时候是值传递。
return的作用:
1.结束函数
2.返回结果给调用者
3. 和break continue一样return后面不能写任何语句,因为执行不到。
4.返回值类型要和返回的值的类型一样。
- 当函数没有返回值时,返回值类型就写void
- 当没有写返回值类型的时候,默认就是int
- 函数不可以嵌套。
- 不允许有同名的函数,包括参数不一样也不行。
- 函数声明可以重复定义。
- 只有函数声明,没有函数的实现在编译时是没有问题的,编译器只检查语法错误,链接的时候才会查看函数是否真的实现了。
- //return 0; 返回0代表程序正常结束,如果返回其它值,代表程序异常退出。
- //argc 参数个数 //argv 参数内容
- //#include 将右边的文件拷贝到当前文件中来
- //如果我们自己写的文件就在include后面用双引号
- “”里面可以写路径,或 文件名.拓展名
如果是双引号首先会在当前文件夹中查找文件,如果在当前文件夹中找不到文件会到编译器的路径中找,如果在编译器中的路径中找不到回到系统的路径中去找。
如果使用的是clang编译器,clang设置include路径是
(4.2是编译器版本):/usr/lib/clang/4.2/include
Mac系统的include路径有:
/usr/include
/usr/local/include
如果include后面是<> 首先会到clang设置include路径中去查找,如果找不到会去mac系统的include路径去找
二、递归:
递归:
函数实现体内再次调用函数本身。阶乘可以使用递归调用。贪吃蛇。
Demo1:
#include <stdio.h> //设计一个函数,计算b的n次方 int myPow(int b, int n) { int result = 1; for (int i = 0; i<n; i++) { result *= b; } return result; } int main(int argc, const char * argv[]) { printf("%d\n",myPow(2, 2)); return 0; }
控制台打印:
4
Program ended with exit code: 0
Demo2:
#include <stdio.h> //注意:递归不能递归的太深 int myPow(int b, int n) { if (n <= 0) { return 1; } return myPow(b, n-1)*b; } int main(int argc, const char * argv[]) { printf("%d\n",myPow(2, 2)); return 0; }
控制台打印:
4
Program ended with exit code: 0