1.函数是什么:是一个大型程序中的某部分代码, 由一个或多个语句块组
成。它负责完成某项特定任务,而且相较于其他代 码,具备相对的独立性。
同时可以提供对过程的封装和细节的隐藏。
2.C语言中的函数
库函数
自定义函数
其中库函数能够查阅资料自行学习http://www.cplusplus.com
自定义函数的组成
type function(a)
{
语句;
}
type是返回类型
function是函数名称
a是函数的参数
举个例子如取两个数的最大值
#include <stdio.h>
//返回类型 函数名称 函数参数m与n
int get_max (int m, int n)
{
if (m > n)
return m;
else
return n;//返回值为整形所以用int
}
int main()
{
int a = 0;
int b = 0;
scanf("%d %d", &a, &b);
int Max = get_max(a, b);
printf("最大值是%d", Max);
return 0;
}
3.函数的参数
3.1实际参数
传给函数的参数
可以是:常量,变量,表达式,函数等等。
在函数调用时必须有准确的值。
3.2形式参数
函数里括号里的参数,只有在函数被调用的过程中才实例化(分配内存单元)
在调用完成后自动销毁。
3.3总结
形参实例化之后相当于实参的零时拷贝。
4.函数的调用
4.1传值调用
对形参的修改不会对实参进行修改。
int a = 1;
int b = 2;
int Max = get_max(a,b);
int get_max(int m, int n)
{
...;
}
如图调用下面的函数只是判断大小谁更大,所以不用修改实参,则用传值调用法。
4.2传址调用
对形参修改会对实参修改。
#include <stdio.h>
//交换两个数的值
void swap(int* pa, int* pb)
{
*pa = *pa + *pb;
*pb = *pa - *pb;
*pa = *pa - *pb;
}
int main()
{
int a = 0;
int b = 0;
scanf("%d %d", &a, &b);
printf("交换前%d %d\n", a, b);
swap(&a,&b);
printf("交换后%d %d\n", a, b);
return 0;
}
//如图要交换两个数的值假设a=1 b=2,交换后a=2 b=1,此时实参改变,用传址调用。改用指针通过a与b的地址作为实参然后通过解引用操作符*来对地址里的值进行修改交换就叫作传址调用。
4.3总结
所以可以对问题进行思考
若需要改变实参就用传址调用,不改变实参就用传值调用。
5.函数的嵌套使用与链式访问
5.1嵌套使用
函数可以嵌套调用类似于分支循环语句的嵌套,但是不能嵌套定义嵌套。(也就是说不能在一个函数里编写另一个函数但可以调用)
5.2链式访问
可以把一个函数的返回值作为另一个函数的参数如
printf("%d", printf("%d", printf("%d", 12)));
//打印出的结果为1221
//实际上时12 2 1