-
函数分类
-
库函数(现成的可以直接使用)
C语言标准中规定了C语言的各种语法规则,C语言并不提供库函数: C语言的国际标准ANSIC规定了一些常用的函数的标准,被称为标准库,那不同的编译器厂商根据ANSIC提供的C语言标准就给出了一系列函数的实现。这些函数就被称为库函数。
对于不了解的库函数学习:www.cplusplus.com
另外:在使用库函数时要包含(#include)头文件
-
自定义函数(自己创建不能直接使用)
语法形式:
ret_type fun_name (形式参数)
{
函数体;
}
其中:
1.ret_type是函数返回值类型,也可以无返回值void,当不写返回值类型时默认为int类型;
2.fun_name是函数名,自定义的,,可以随意取就是个名字;
3.括号中放的是形式参数,可以无(明确为无时可以在括号里加void),也可以有多个;
4.{}括起来的是函数体,描述的是函数完成任务的过程;
-
函数参数
实参:
真实传给函数的参数,叫实参;
实参可以是:常量、变量、表达式、函数等;
无论实参是何种类型的量,在进行函数调用时,它们都必须有确定的值,以便 把这些值传 送给形参;
形参:
形式参数是指函数名后括号中的量,因为形式参数只有在函数被调用的过程
中才实例化(分配内存单元),所以叫形式参数。形式参数当函数调用完成之
后就自动销毁了。因此形式参数只在函数中有效。
-
函数的调用
首先需要了解的是形参和实参地址不一样,当实参传递给形参的时候,形参是实参的一份临时拷贝所以对形参的修改不会影响实参,因此对于函数调用就有两种方式:
传值调用:
不需要改变实参的值;
eg:求最大值时就不需要改变实参的值
#define _CRT_SECURE_NO_WARNINGS 1
#include<stdio.h>
int get_max(int a, int b)
{
return (a > b ? a : b);
}
int main()
{
int x, y;
scanf("%d %d", &x, &y);
int max = get_max(x, y);
printf("最大值:%d", max);
return 0;
}
传址调用:
需要改变实参的值,因为上述原因,所以需要改变实参的时候可以取
地址(&)且在形参处使用指针;
eg:交换x和y的值时这时就需要改变x和y的值
#define _CRT_SECURE_NO_WARNINGS 1
#include<stdio.h>
void swap(int *a, int *b)
{
int t;
t = *a;
*a = *b;
*b = t;
}
int main()
{
int x, y;
printf("交换前:");
scanf("%d %d", &x,&y);
swap(&x, &y);
printf("\n交换后:%d %d", x, y);
return 0;
}
-
函数的嵌套调用与链式访问
嵌套调用:一个函数里面调用另外一个函数;也可以自己调用自己即递归
链式访问:把一个函数的返回值作为另一个函数的参数
eg:printf(“%zd\n”,strlen(“abcdef”));——%zd无符号返回类型
-
函数模块
在头文件中添加.h文件实现函数的声明,在源文件中加.h文件实现函数的定义最后在test.c中调用函数时直接添加声明自己创建的头文件(#include“….h”自己创建的头文件用“”而不是<>)就可以实现函数了