【手把手带你入门】函数的基本使用
函数的概念
在【手把手带你入门】初识C语言(下)中我们已经对函数有了一个简单的认识。
函数的分类
C语言中函数分为库函数和自定义函数。
库函数
就像我们每个人都要吃饭、睡觉等等,这是我们作为一个人所必须的基本活动,而在C语言中,我们也会频繁地使用一些特定的功能,比如打印结果、输入数字等等,这些函数每个码农都可能用到,所以C语言就贴心地为我们定义好这些函数,并放在基础库中供我们随取随用。
关于库函数的参考和学习,大家可以进入这个网站进行查看www.cplusplus.com
在C语言中,常用的库函数有以下几类:
IO函数 (输入输出等函数)
字符串操作函数
字符操作函数
内存操作函数
时间/日期函数
数学函数
其他库函数
当我们要学习一个库函数的时候,我们可以在上面给出的网站中进行查询。
例如,我想要查询一下strcpy这个函数。
除了以上的网址,我们还可以借助其他的工具。
MSDN(Microsoft Developer Network)
http://en.cppreference.com
自定义函数
我们知道,库函数是用来完成一些比较基础的任务的,它并不能帮我们做完所有的事情,这时候我们可以自定义函数,自己创建一个函数来帮助我们完成任务,这种自己设计函数的方式给了我们一个巨大的空间去发挥和创造。
那么我们应该如何定义一个函数呢?
组成部分
首先我们先来看一下函数都有哪些组成部分呢?
所以我们可以看到,函数的组成部分为:函数名、函数参数、返回类型和函数实现的语句。如果函数不返回任何值,则返回类型为void。
下面我们举一个例子:
写一个函数可以找出两个数的最大值
运行结果如下:
如果你觉得这篇文章对你有用,记得点赞收藏加关注噢!
函数的参数
如果我们要写一个函数用于交换两个整型变量的内容,我们应该怎么写呢?
#include <stdio.h>
void swap1(int x, int y)
{
int tmp = x;
x = y;
y = tmp;
}
int main()
{
int a = 10;
int b = 20;
printf("交换前:a=%d b=%d\n", a, b);
swap1(a, b);
printf("交换后:a=%d b=%d\n", a, b);
return 0;
}
运行代码:
我们发现,a、b的值并没有如我们所愿进行交换。问题出在哪里了呢?
这里就涉及到了一个东西,就是函数的参数。函数的参数分为实际参数和形式参数。
实际参数(实参):
实际参数就是真实传给函数的参数,叫实参。它可以是:常量、变量、表达式、函数等。无论实参是何种类型的量,在进行函数调用时,它们都必须有确定的值,以便把这些值传送给形参。
形式参数(形参):
指函数名后括号中的变量,因为形式参数只有在函数被调用的过程中才实例化(分配内存单元),所以叫形式参数。形式参数当函数调用完成之后就自动销毁了。因此形式参数只在函数中有效。形式参数是实际参数的一份临时拷贝。
所以当我们把a和b的值传给swap函数之后,x、y只是在函数内部进行值的交换,函数调用完成后,形式参数x、y就自动销毁了,并没有改变a、b的值,因此我们发现调用函数后,a、b的值并没有被交换。
那么如果我们想要通过函数实现交换a、b的值这一功能呢?
#include <stdio.h>
void swap2(int* x, int* y)
{
int tmp = *x;
*x = *y;
*y = tmp;
}
int main()
{
int a = 10;