<>一、为什么要封装函数。
1、函数封装后可以提高我们代码的阅读性,可以快速的略过一些封装函数,直接找到main()函数,从main()函数开始再次有序的阅读代码。
2、可以多次使用,不在需要我们去复制粘贴,一次购买,终身受益。 3、可移植性高,安全性高,不再将代码展示出来,通过函数调用直接使用。
<>二、基础函数的封装。

2.1无参数函数的封装

基础函数的封装就是将代码中需要的代码打包,并将这个包裹命名,在后续程序中,我们直接使用这个包裹,而不需要重新编写一段代码。
例一:我们用程序来代码来简单操作一下一个简单的函数封装。这是一个简单的不传参数的函数。通过函数名加括号我们可以调用对应的函数。
void xunhuan() { int a; for(a = 1;a<5;a++) { printf("%d\n",a); } } int main() {
xunhuan(); return 0; }

2.2 有参数函数的封装。
2.2.1 值传递
#include <stdio.h> #include <stdlib.h> void func(int x,int y) { int temp; temp=
x; x=y; y=temp; printf("x=%d y=%d\n",x,y); } int main() { int a,b; printf(
"请输入两个数\n"); scanf("%d %d",&a,&b); func(a,b); printf("a=%d b=%d\n",a,b); system(
"pause"); return 0; }

可以看到,在封装的函数func里面,我们通过一个中间变量temp对x和y进行了位置的互换,在封装函数里面的x与y确实是交换了位置,但是我们调用封装函数过后却没有对a和b进行位置的交换。并不是我们的函数没有调用成功,而是我们没有正确的理解。
封装函数里面的x与y我们将他们看作两个人,对应的x与y的值我们看作他们自己有的钱。同样的对a和b也成立。
形参(也就是x和y)他们有自己的兜,x装了20块钱,y装了30块钱。
实参(也就是a和b)他们也有自己的兜,a装了20块钱,b装了30块钱。

无论x和y怎么交换,那是x和y的事情。无法对a和b造成影响(主要的解释就是:形参和实参变量各自有不同的存储单元,实参有一个存储空间,行参有一个存储空间,将实参单值传递给形参,在形参的存储空间里进行的运算,但是这种运算不会对实参的存储空间产生影响。)

2.2.2 地址传递
那我们如何才能够将a和b也交换一下呢,这就是地址传递函数:
我们将之前的代码改一下:
#include <stdio.h> #include <stdlib.h> void func(int *x,int *y) { int temp;
temp= *x; *x = *y; *y = temp; printf("x=%d y=%d\n",*x,*y); } int main() { int a,
b; printf("请输入两个数\n"); scanf("%d %d",&a,&b); func(&a,&b); printf("a=%d b=%d\n",a
,b); system("pause"); return 0; }

我们将代码修改过后,我们就可以使a和b的值交换了,这和刚才的却别就在x和a都使用的一个兜,y和b也只使用的一个兜,(我们对x和y取地址,使形参和实参共用一个地址),一旦x和y交换,那么a和b也会进行交换,所以我们要想通过形参对实参进行操作,就需要对形参进行取地址。

对于有参数的函数进行传递,我们一般都使用值传递和地址传递这两种,还有一种引用传递,我没怎么看就不写了。
关于函数的封装我就写这么多了,祝福大家新年快乐。
师承上官可编程!

技术
下载桌面版
GitHub
Gitee
SourceForge
百度网盘(提取码:draw)
云服务器优惠
华为云优惠券
腾讯云优惠券
阿里云优惠券
Vultr优惠券
站点信息
问题反馈
邮箱:[email protected]
吐槽一下
QQ群:766591547
关注微信