函数

来源:互联网 发布: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不能返回局部变量的地址,如&numF),但是srcT

C.return 0;主函数结束,0返回给系统,防止系统CPU的调用检查,程序是否出错,占用内存

D.exit1);结束整个程序,头文件为#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

 

0 0