.1.函数是什么 C语言中的函数的定义是:子程序,由一个或者多个语句组成,可以单独完成模块的任务。
.2.库函数 C语言编译器提供的库函数,可以之间拿来使用。例如:printf,scanf,strlen
.3.自定义函数 自定义函数和库函数一样,有函数名,返回值类型和函数参数,但是需要我们自己设计。 函数的组成:
ret_type fun_name(paral,*)
{
statement;//语句项
}
ret_type 返回类型
fun_name 函数名
paral 函数参数
例子:求两个整数中的最大值
#includeint add(int x, int y) { return x + y; } int main() { int a = 0; int b = 0; scanf("%d %d", &a, &b); int sum = add(a, b); printf("%d",sum); return 0; }
.4.函数的参数 .4.1实际参数 真正传给函数的参数叫实参。 实参可以是:常量,变量,表达式,函数等。 无论实参是哪种类型,在函数调用时都有确定的数值,以便传给形参。 .4.2形式参数 形式参数时指函数名括号里面的变量,因为形式参数只有在函数被调用的过程才会被分配空间。当函数被调用结束后空间就被销毁。因此形式参数只有在函数中才有效。
.5.函数的调用 .5.1传值调用 函数的形参和实参分别占用不同的内存块,对形参的修改不会影响实参。 .5.2传址调用 传址调用是把函数外部创建变量的内存地址传递给函数参数的一种调用函数的方式。 这种方式传参可以让函数和函数外部的变量建立起关系,也就是函数内部可以直接操作函数外部的变量。 .5.3练习 (1)实现一个整形有序数组查找:
#includeint fun_t(int* arr, int sz) { printf("请输入您需要找的数:> "); int left = 0;//数组第一个数的下标 int right = sz - 1;//数组最后一个数的下标 //求数组的中间值 int k = 0; scanf("%d", &k); while (right >= left) { int mid = (left + right)/2;//每次循环都进行二分查找 if (arr[mid] > k) { right = mid - 1;//如果寻找的数在中间值的左边,那么下标在中间值的左边减一 } else if (arr[mid] < k) { left = mid + 1;//如果寻找的数在中间值的右边,那么下标在中间值的左边加一 } else { return mid; } } if (left < right) { return -1; } } int main() { int arr[] = { 1,2,3,4,5,6,7,8,9 }; int sz = sizeof(arr) / sizeof(arr[0]);//求数组长度 int ret=fun_t(arr, sz); if (-1 == ret) { printf("找不到n"); } else { printf("找到了,下标是:%dn", ret); } return 0; }
.6.函数的嵌套调用与链式访问 .6.1嵌套调用
#include注意:函数可以嵌套调用,但是不能嵌套定义 .6.2链式访问void fun1() { printf("hehen"); } void fun2() { int i = 0; for (i = 1; i < 4; i++) { fun1(); } } int main() { fun2(); return 0; }
把一个函数的返回值作为另一个函数的参数
#include#include int main() { int len = strlen("abcedf"); printf("%dn", len); printf("%d", strlen("abcedf"));//结果都是一样的。但是这个将strlen的返回值传给printf函数 return 0; }
.7.函数的声明和定义 .7.1函数声明: 1.告诉编译器有一个函数叫做什么,参数是什么,返回类型是什么,但是具体是不是存在,函数声明不了。 2.函数的声明一般出现在函数使用之前,满足先声明后使用 3.函数的声明一般放在头文件中
如:
#include.7.2 函数定义int add(int,int); int main() { int a = 10; int b = 20; int sum = add(a, b); printf("%dn", sum); return 0; } int add(int a, int b) { int c = a + b; return c; }
指函数的具体实现 ,交代函数的功能实现
.8.函数递归 8.1什么是递归
递归就是一个过程或函数在其定义或说明中有直接或间接调用自身
.8.2递归的两个必要条件 a,存在限制条件,当满足这个限制的条件,递归就不再继续 b,每次递归之后越来越接近这个限制条件例如:接收一个整形,按照顺序打印他的每一位
输入:1234,输出1 2 3 4
解题思想: 递归就是传递然后回归。


