C语⾔学习第三阶段-函数的封装
⼀、为什么要封装函数。
1、函数封装后可以提⾼我们代码的阅读性,可以快速的略过⼀些封装函数,直接到main()函数,从main()函数开始再次有序的阅读代码。
2、可以多次使⽤,不在需要我们去复制粘贴,⼀次购买,终⾝受益。
3、可移植性⾼,安全性⾼,不再将代码展⽰出来,通过函数调⽤直接使⽤。
⼆、基础函数的封装。
2.1⽆参数函数的封装
基础函数的封装就是将代码中需要的代码打包,并将这个包裹命名,在后续程序中,我们直接使⽤这个包裹,⽽不需要重新编写⼀段代码。例⼀:我们⽤程序来代码来简单操作⼀下⼀个简单的函数封装。这是⼀个简单的不传参数的函数。通过函数名加括号我们可以调⽤对应的函数。
void xunhuan()
{
int a;
for(a =1;a<5;a++)
{
printf("%d\n",a);
}
}
int main()
{
xunhuan();
return0;
}
2.2 有参数函数的封装。
c语言如何去学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");
return0;
}
可以看到,在封装的函数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");
return0;
}
我们将代码修改过后,我们就可以使a和b的值交换了,这和刚才的却别就在x和a都使⽤的⼀个兜,y和
b也只使⽤的⼀个兜,(我们对x和y取地址,使形参和实参共⽤⼀个地址),⼀旦x和y交换,那么a和b也会进⾏交换,所以我们要想通过形参对实参进⾏操作,就需要对形参进⾏取地址。
对于有参数的函数进⾏传递,我们⼀般都使⽤值传递和地址传递这两种,还有⼀种引⽤传递,我没怎么看就不写了。
关于函数的封装我就写这么多了,祝福⼤家新年快乐。
师承上官可编程!
版权声明:本站内容均来自互联网,仅供演示用,请勿用于商业和其他非法用途。如果侵犯了您的权益请与我们联系QQ:729038198,我们将在24小时内删除。
发表评论