库函数;C语言事先定义好的函数
自定义函数;自己定义
函数的定义:函数是由, 函数类型 函数名 函数参数 返回值 组成的
重点讲自定义函数,以下代码都是自定义函数
实参;调用函数,函数真实传递过去得数叫实参 (实参包括 ,常量,变量,表达式,函数等)
形参; 函数定义时的参数叫形参 ,调用时才分配地址所以叫形式参数,函数调用完自动销毁,因此只在函数内有用 ,形参只是实参的临时拷贝
传值调用 ;函数的形参和实参,分别占不同的内存块,对形参的改变不会影响实参
传址调用 ;把函数外部创建的内存地址,传递给函数参数
;这种传参方式让函数内和函数外建立真正的联系,因此函数内可以改变函数外,共用 一个地址
传值函数 形参实参互不影响
传值函数例子;比较两个数大小
#include <stdio.h>
int get_max(int x,int y) //形参 只在函数中有效
int z=0;
if(x>y)
z=x;
else
z=y;
return z;
}
int main()
{
int a=10;
int b=20;
int max = get_mxa(a,b); //自定义函数
printf("max=%d",max); //实参 得有确定的参数
}
传址函数 形参实参公用一个地址 函数内可以改变函数外 用传址
传值函数例子:交换两个数
#include <stdio.h>
void swap(int*pa , int*pb)
{
int z = 0;
z = *pa;
*pa = *pb;
*pb = z;
}
int main()
{
int a = 10;
int b = 20;
printf("a=%d b=%d\n", a,b);
swap(&a,&b); //自定义函数
printf("a=%d b=%d", a, b);
return 0;
}
函数的嵌套==套娃
链式访问:把一个函数的返回值变为另一个函数的参数
void函数类型表示可以不写返回值
函数递归
函数递归:直接或者间接调用自身的一种方法
递归的必要条件
1.存在限制条件,当满足这个限制条件的时候,递归便不再继续
2.每次递归调用之后越来越接近这个条件。
3.递归调用的时候返回到调用它的函数哪,
函数 1调2,2调3,当3不满足递归条件 3返回到2函数,2函数带着3和2的值返回到1函数
1函数带着3,2,1的值返回....
要做到:大事化小,小事化了
例子:打印输入的数
输入一个大于9 的数 逐步打印个十百千位
void print(unsigned int b)
{
if (b > 9)
{
print(b / 10); //1234除10 把123再传给print
}
printf("%d", b % 10); 最后逐步打印
}
int main()
{
unsigned int a = 0;
scanf("%d",&a); //例输入1234
print(a);
return 0;
}