函数
来源:互联网 发布:java项目开发实录 编辑:程序博客网 时间:2024/05/04 11:03
函数
使用函数的好处
① 提高代码的复用性
② 提高代码的维护性,使用函数时,尽量不要调用其它函数
③ 迭代开发(可扩展性)
函数调用
① 通过函数名找到函数的入口地址
② 给形参分配内存空间
③ 传值:把实参变量对应空间的值传给形参
④ 执行函数体里的语句
⑤ 函数返回并释放内存语句
1.函数的定义和声明
定义的一般形式
类型标识符 函数名(形式参数表列)
{
声明部分
语句
}
int fun(int i)
{
i = i+1;
return i;
}
声明:int fun(int i)
2.函数的三要素:函数名,形参,返回值
1) 函数名
体现函数的功能(自注释性)提高代码的可读性,下划线所组成的字符最多有5个字符例如del_ch_count_min
2) 形参
A.如何确定传入的是值还是地址
读(不修改)实参变量对应内存空间的值,传递的是变量名
写(修改)实参变量对应内存空间的值,传递的是变量的地址
B.传出参数和传入参数
传出参数:空变量从函数内部带出的值
传入参数:实参中有值调入形参中使用
3) 返回值
A.如何返回多个值?使用传出参数
B.return不能返回局部变量的地址,如&num(F),但是src(T)
C.return 0;主函数结束,0返回给系统,防止系统CPU的调用检查,程序是否出错,占用内存
D.exit(1);结束整个程序,头文件为#include <stdio.h>
其中1返回给用户看;使用echo $?命令行可以查看当前程序的返回值
3.函数指针
int (*p_func)(int, int);//用于传参
p_func = add;//add为函数入口地址
p_func = &add;//&add为函数整体地址
回调函数:一个通过函数指针调用的函数
把函数指针(入口地址)赋给另一个函数
面向对象的多态机制:函数指针做形参
相同的接口,不同的功能
例如:
int add(int a, int b)
{
//功能
}
int sub(int a, int b)
{
//功能
}
int mul(int a, int b)
{
//功能
}
int main()
{
int (*fuunc_arry[3])(int ,int )
func_arry[0] = add;
func_arry[0] = sub;
func_arry[0] = mul;
for(i = 0; i < 3; i++)
{
func_arry[i](num1,num2);
}
}
4.主函数的形参(命令行参数)
int main(int argc, int *argv[])
{
}
其中argc为参数的个数,命令也是一个参数
argv[]保存参数的指针数组
例如:
1 #include <stdio.h>
2 #include <stdlib.h>
3
4 int main(int argc, char *argv[])
5 {
6 if(argc != 3)
7 {
8 printf("please input two param\n");
9 exit(1);
10 }
11 printf("argc = %d\n",argc);
12 int i;
13 for(i = 0; i < argc; i++)
14 {
15 //printf("argv[%d] = %s\n",i,argv[i]);
16 printf("argv[%d] = %d\n",i,atoi(argv[i]));
17 }
18 return 0;
19 }
执行结果:
[root@promote zhizheng]# ./a.out
please input two param
[root@promote zhizheng]# ./a.out 1 2
argc = 3
argv[0] = 0
argv[1] = 1
argv[2] = 2