什么是函数
- 是一个大型程序中部分代码,由一个或者多个代码块组成,负责完成某项任务功能,一个函数就是代表一个功能,相较于其他代码具有独立性。
- 一般会有输入参数并有返回值,提供对过程的封装和细节的隐藏。
c语言中函数的分类
- 库函数
- 自定义函数
怎么学习库函数,简单看看这个网址: https://cplusplus.com/https://cplusplus.com/简单总结,c语言常用的库函数都有
- IO函数
- 字符串函数
- 字符操作函数
- 内存操作函数
- 时间/日期函数
- 数学函数
- 其他库函数
库函数
一个简单的拷贝函数
#include<string.h> //strcpy()函数的头文件
#include<stdio.h>
int main()
{
char arr1[]="bite";
char arr2[20]="############";
strcpy(arr2,arr1); //将arr1的内容拷贝到arr2里面
printf("%s\n",arr2);
return 0;
}
memset函数
int main()
{
char arr[] = "hello world";
memset(arr, '*',5);// meset(名字地址,替换的内容,替换的数量) 作用就是将前五个字符替换为*
printf("%s\n",arr);
return 0;
}
自定义函数:和库函数一样,有函数名,返回值类型和函数参数,不一样的是都是程序员自己设计的
#include<stdio.h>
int Add(int x,int y){ //add是函数名,int是函数类型,int x,int y是函数参数
int z=0;
z=x+y;
return z;
}
int main()
{
int a =9;
int b =10;
int sum = Add(a,b);
printf("结果是%d\n",sum);
return 0;
}
函数交换变量值:
实际参数和形式参数
- 在定义函数时,函数名后面括号中的变量名称是“形式参数”,在主函数中调用一个函数时,函数名后面括号中的参数称为“实际参数”
- 形参实例化后(就是被调用后)形参其实相当于实参的一份临时拷贝。
- 出了自定义函数,形参自动销毁
- 形参的修改是不会改变实参的
函数的调用
传值调用
函数的形参和实参分别占有不同的内存块,对形参的修改不会影响实参。
传址调用
- 传址调用是把函数外部创建变量的内存地址传递给函数参数的一种调用函数的方式。
- 这种传参方式可以让函数和函数外边的变量建立起真正的联系,也就是函数内部可以直接操作函数外部的变量
函数的嵌套调用和链式访问
函数和函数之间可以有机结合
嵌套调用
#include<stdio.h>
void new_line()
{
printf("hhhh\n");
}
void three()
{
int i = 0;
for(i=0;i<3;i++)
{
new_line();
}
}
int main(){
three();
return 0;
}
链式访问
- 把一个函数的返回值作为另一个函数的参数。
比如:printf()函数,它的返回值是字符串的个数,内层printf(“%d,43”)打印43,返回2,
即printf("%d",printf("%d",2)); printf("%d",2)因为打印2,是一个字符,返回1
printf("%d",1);到达最外层打印1
#include<stdio.h>
int main()
{
printf("%d",printf("%d",printf("%d",43)));
return 0;
}
结果:
函数的声明和定义
函数的声明:
1.告诉编译器有一个函数叫什么参数是什么,返回类型是什么,但是具体是不是存在无关紧要。
2.函数的声明一般出现在函数的使用之前,要满足先声明后使用。
3.函数的声明一般要放在头文件中。
函数的定义:
函数的定义是指函数的具体实现。交代函数的功能实现。
下面一个简单的例子