函数的学习有八点:1.函数是什么  2.库函数  3.自定义函数  4.函数参数  5.函数调用  6.函数的嵌套调用和链式访问  7.函数的声明和定义  8.函数递归

以下对自定义函数做出小结。

一.自定义函数

ret_type fun_name(paral,*)//返回类型 函数名(函数参数)
{
    statement;//语句项
}

eg1.写一个函数,找出两个整数的最大值

int get_max(int x,int y)
{
    if(x>y)
       return x;
    else
       return y;
}
int main()
{
    int a=10;
    int b=20;
    int max=get_max(a,b);
    printf("%d\n",max);
    return 0;
}

二.函数参数

1.实际参数(实参)

真实传给函数的参数,叫实参。实参可以是:常量,变量,表达式,函数等。无论是何种类型的量,在进行函数调用时,它们都必须有确定的值,以便把这些值传给形参。

2.形式参数(形参)

指函数名后括号中的变量。因为形参只有在函数被调用的过程中才实例化(分配内存单元),当函数调用完成后就被销毁了,因此形参只在函数中有效。

eg2.写一个函数可以交换两个整型变量的内容

错误写法:

void Swap(int x,int y)
{
   int tmp=0;
   tmp=x;
   x=y;
   y=tmp;
}
int main()
{
   int a=10;
   int b=20;
   Swap(a,b);
   printf("a=%d b=%d",a,b);
   return 0;
}

错误原因:当实参传给形参的时候,形参其实时实参的一份临时拷贝,对形参的修改是不会改变实参的。所以结果换不了,因为xy与ab无联系

所以应用取地址的方式改变ab的值。

取地址与解引用操作:

int main()
{
   int a=10;
   int* pa=&a;//&a拿到a的地址,拿出来后是个数字
                地址要存起来,给一个变量pa
                pa的类型用int*表示
   *pa=20;//把pa进行解引用操作:通过pa地址找到pa内容(*pa就是a)。
            并将a值改成20
    printf("%d\n",a);
    return 0;
}

正确写法:

void Swap(int* pa,int* pb)
{
   int tmp=0;
   tmp=*pa;
   *pa=*pb;
   *pb=tmp;
}
int main()
{
   int a=10;
   int b=20;
   Swap(&a,&b);
   printf("a=%d b=%d\n",a,b);
   return 0;
}