什么是函数?
- 函数是一个可以重复使用的功能代码块,一个封闭的(空间),它可以在代码里随意调用。利用函数的封装可以减少重复代码的开发,提高代码的利用率,让代码更简洁,更容易理解。
- 我们还可以还可以把函数理解成一个工厂,函数的参数就相当于工厂里的原材料,函数内部的代码(函数体)相当于工厂的生产线生产出手机,函数参数进行加工得出的结果再用return 返回,返回值就是生产出来的手机。
我们来编写一个实现两数求和的函数:
int add(int a, int b){
return a + b;
}
int main()
{
int a = 5;
int b = 7;
printf("%d\n",add(a, b));
system("pause");
return 0;
}
函数的调用
add(a,b)
//是对上述函数的调用
- 函数的调用过程
代码执行到函数调用的位置时,就会进入函数的内部执行,同时对参数进行赋值,按照函数内部顺序从上至下依次执行,直到遇到return语句,函数结束,结束后回到被调用的位置,继续往下执行。
- 只定义函数的话,函数体内容是不会执行的。
- 一个函数可以被调用多次,每次调用的时候,可以传递不通用的参数。
- 函数的形参是实参的一份‘拷贝‘
int add(int a, int b){
return a + b;
}
int main()
{
int a = 5;
int b = 7;
printf("%d\n",add(a, b));---------->
printf("%d\n", add(2, 9));--------->
system("pause");
return 0;
}
//执行结果
12
11
请按任意键继续. . .
传值
== 我们写一个交换a,b值的函数==
void swap(int x, int y)
{
int temp = x;
x = y;
y = temp;
}
int main()
{
int a = 10;
int b = 16;
swap(a, b);
printf("a = %d b = %d\n", a, b);
system("pause");
return 0;
}
运行结果如下
a = 10 b = 16
请按任意键继续. . .
可以看到,a和b的值最终并没有被交换。开始时a,b的值为10,16,而最终还是同样的值. 这样的原原因是函数内部的访问的x和y不是a和b的额本体 ,
传指针
- 那么为了解决以上的问题,我们就需要传指针,
void swap(int* a, int* b)
{
int temp =*a;
*a = *b;
*b = temp;
}
int main()
{
int a = 10;
int b = 16;
swap(&a,&b);
printf("a = %d b = %d\n",a, b);
system("pause");
return 0;
}
运行结果为
a = 16 b = 10
请按任意键继续. . .
可以看到在这种情况下,a和b的值才真正交换了。https://editor.csdn.net/md/?articleId=109286880