一、函数是什么
在计算机科学中,子程序(语:Subroutine,procedure,function,routine,method,subprogram,callable unit),是一个大型程序中的某部分代码, 由一个或多个语句块组成。它负责完成某项特定任务,而且相较于其他代 码,具备相对的独立性。一般会有输入参数并有返回值,提供对过程的封装和细节的隐藏。这些代码通常被集成为软件库。
二、函数分类
1.库函数(可以去cplusplus网站查)
I/O函数
字符串操作函数
字符操作函数
内存操作函数
时间日期函数
数学函数
其他函数
#include <stdio.h>
#include <string.h>
int main()
{
char arr1[20] = {0};
char arr2[] = {"hello"};
strcpy(arr1,arr2);
printf("%s",arr1);
return 0;
}
int main()
{
char arr2[] = { "hello,lll" };
memset(arr2,'x', 3);
memset(arr2+1,'0',2);
printf("%s", arr2);
return 0;
}
2.自定义函数
实参传给形参的时候,形参是实参的一份临时拷贝,对形参修改不会影响实参
若想改变实参,可以传地址
三、函数参数、函数调用
实参:真实传递给函数的值 必须有确定的值
形参:函数名后括号中的变量 调用完销毁
传值调用:对形参修改不影响实参
传址调用:函数内部可以操作外部变量
练习:
//写一个可以交换两个变量值的函数
int jiaohuan(int* a, int* b)
{
int z = 0;
z = *a;
*a = *b;
*b = z;
}
int main()
{
int a = 0;
int b = 0;
scanf("%d %d",&a,&b);
printf("交换前a=%d,b=%d\n",a,b);
jiaohuan(&a,&b);
printf("交换后a=%d,b=%d", a, b);
return 0;
}
四、嵌套调用、链式访问、声明、定义
嵌套调用:函数里面可以调用另外一个函数,但不能定义新函数
链式访问:
声明:放到头文件里,使用声明一下#include "头文件"
定义:写函数放在 函数.c文件里 封装卖钱
六、函数递归、迭代
1.递归
必要条件:存在限制条件,满足便不再继续
每次递归越来越接近限制条件
2.迭代
类似于循环
汉诺塔问题,青蛙跳台阶问题