简语
大家好!我是你们的小孟同学,因为一些原因断更了,在这里给大家说声抱歉,这几天我会连续更新,欢迎各位老铁,好了长话短说,今天我要讲的是函数
1.函数是什么
我们来看,什么是函数,我们在数学中也学过函数,但你们了解C语言的函数吗?
-
函数就是 C 语言的模块,一块一块的,有较强的独立性,可以相互调用,换话说,C 语言中,一个函数里面可以调用 n 个函数,即大函数调用小函数,小函数又调用“小小”函数。这就是结构化程序设计,所以面向过程的语言又叫结构化语言。
-
函数就是一系列 C 语句的集合,能完成某个特定的功能。需要该功能的时候直接调用该函数即可,不用每次都堆叠代码。需要修改该功能时,也只需要修改和维护这一个函数即可。
2. C语言中函数的分类
1.库函数
2.自定义函数
2.1 库函数
这有人会问,什么是库函数,为什么会有库函数呢?
首先,库函数是把函数放到库里,供别人使用的一种方式。.方法是把一些常用到的函数编完放到一个文件里,供不同的人进行调用。一般是指编译器提供的可在c源程序中调用的函数。可分为两类,一类是c语言标准规定的库函数,一类是编译器特定的库函数。
这有老铁来问了那我们怎么去看那些库函数呢,到底在哪里去看,并且去使用呢
在这里我推荐四个工具
MSDN(Microsoft Developer Network)
www.cplusplus.com
http://en.cppreference.com(英文版)
http://zh.cppreference.com(中文版
我们来简单看看:www.cplusplus.com
简单的总结一下,C语言常用的库函数都有:
· O函数
· 字符串操作函数
· 字符操作函数
· 内存操作函数
· 时间/日期函数
· 数学函数
· 其他库函数
在这里我们举两个例子来给大家看一下:
stecpy
可以看出stecpy函数是复制后面C语言代码的字符串
注:
使用库函数,必须包含一个include对应的引头文件。
2.2自定义函数
看到自定义函数,有人会问,我们有了库函数还要自定义函数干什么,其实库函数并不能干所有事情,如果可以,那还要程序员干什么?
自定义函数和库函数一样,有函数名,返回值类型和函数参数。
不同的是:这些让我们自己来设计
如:
ret_type fo_name(pi,*)
{
statme;//语句项
}
re_type 返回类型
fo_name 函数名
pi 函数参数
我们举几个例子:
写一个函数可以找出两个整数的最大值
#include <stdio.h>
int get_mi(int a, int b)
{
return (a > b) ? (a) : (b);//如果a>b成立,则返回a的值,反之a>b不成立是b的值
}
int main()
{
int num1 = 0;
int num2 = 0;
scanf("%d%d", &num1, &num2);
int ret = get_mi(num1,num2);
printf("max=%d", ret);
return 0;
}
再举个例子:
写一个函数可以交换连个整形的内容。
#include <stdio.h>
void ret(int* pb, int* pd)
{
int tom = 0;
tom = *pb;
*pb = *pd;
*pd = tom;
}
int main()
{
int a = 1;
int b = 2;
scanf("%d%d",&a, &b);
printf("交换前:%d %d", a, b);
ret(&a, &b);
printf("交换后:%d %d",a,b);
return 0;
}
那为什么我们交换两个数,要传地址呢?
而不是直接传数字,简单来说,如果实参传到形参,形参要改变实参位置,以及改变它本身的数字,实参要传址,形参要用指针来接收它。
3. 函数的参数
3.1 实际参数 (实参)
真实传给函数的参数,叫实参。
实参可以是:常量,变量,表达式,函数等。
无论实参是何种类型的量,在进行函数调用时,它们都必须有确定的值,以便把这些值传送给形
参。
3.2 形式参数 (形参)
形参是函数括号中接收的变量,并且是在函数被调用的时候才开始分配空间的,所以叫形式参数。形式参数在被函数调用完就销毁了,因此,形式参数只在函数调用时才有效。
这样我们可以简单的认为:形参实例化之后相当于实参的临时拷贝
4. 函数的调用
4.1传值调用
函数的形参和实参分别占不同的内存块,对形参的修改不会影响实参
4.2传址调用
传址调用其实就是在函数外部创建变量地址然后再把它传到这个临时创建的变量地址中
这种方式可以让函数和函数外面的变量建立起真正的联系,也就是函数内部可以直接操作函数外部的变量。
好了,今天就讲到这里,谢谢各位老铁观看,我们下期见,拜了拜。