初识函数

1.什么是函数

在维基百科中,对于函数的定义是子程序。子程序是一个大型程序中的某部分代码,由一个或多个语句块组成,他负责完成某项特定的任务,而且相较于其他的代码,具备相对的独立性。【口语化解释】函数就是一段封装好的,可以重复使用的代码,它使得我们的程序更加模块化,不需要编写大量重复的代码。函数可以提前保存起来,并给它起一个独一无二的名字,只要知道它的名字就能使用这段代码。函数还可以接收数据,并根据数据的不同做出不同的操作,最后再把处理结果反馈给用户。

1.函数分类

1.库函数

为什么会有库函数呢?早期的c语言是没有函数的,他只规定语法,比如for循环之类的该怎么写然后各种各样的语法细节的规则非常规定的很清楚,就是你写出的代码能够编译处理。但是当有一天呢,A想在屏幕上打印一个信息的时候A就实现了一个类似于printf1的函数的功能。那这个时候呢,B说,我也要一个打印的函数,于是他写了一个printf2,后来c说,他也想打印。那他呢,也写了一个printf3函数。这些人都互相都不知道,所以我们看一下。当我们每个人都去实行打印这个功能的时候,这个代码时,就变得冗余了。第二是什么呢?开发效率低,我们每个人都在重复的造论子,你写一个,他也写一个,别人再写一个。写的都是类似的功能,开发效率当然低了。第三个就是不标准,你写的他写的都是同一功能,但是这个实现方法可能不一样。参数也可能不一样,返回值类型也可能不一样。所以基于以上原因。 那能不能把常用的一些功能实现成函数呢?那这个时候呢,就有了库函数的概念,这个函数只要把参数规定死了。 返回类型规定死了。函数名规定死了,那他的使用方法肯定就是一模一样了,库函数的出现让我们代码的开发效率变高了。 代码更加标准化了。注:但是库函数的使用必须包含对应的头文件

库函数就在这些头文件里面

2.自定义函数

由于库函数不能干所有的事情,所以更加重要的是自定义函数 。自定义函数和库函数一样,有函数名,返回值类型和函数参数。但是不一样的是这些都是我们自己来设计,这给了程序员一个很大的发挥空间。

函数由函数类型,函数名,形参组成

上图中 bool      

就是函数类型(在头文件stdlib.h);

当然,函数的定义也可以放在使用之后,但是需要在使用之前进行声明。声明可以放在main之前,也可以放置在调用函数的内部。

函数的参数

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

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

// 写一个函数可以交换两个整型变量的内容void swap(int x, int y) 
{      
  int  temp = 0; 
       temp = x; 
       x = y;
       y = temp;
}
#include <stdio.h>
    int main() {
        int a = 0, b = 0;
        scanf("%d %d", &a, &b);        // 交换两个变量 
        printf("before:a = %d, b = %d\n", a, b);
        swap(a, b);   // 传值调用
        printf("after:a = %d, b = %d\n", a, b);
        return 0;
}

结果:

我们观察这段代码发现,a和b并没有交换。失败的原因是:a 和 b 是实参 , x 和 y 是形参。当函数调用的时候,实参传给形参,形参其实是实参的一份临时拷贝。所以对形参的修改,不会影响实参

正确写法:

// 使用指针变量,*p_x 解引用操作
void swap(int *p_x, int *p_y) { 
   int  temp = 0;
    temp = *p_x;
    *p_x = *p_y; 
   *p_y = temp;
}
#include <stdio.h>
    int main() {
    int a = 0, b = 0; 
    scanf("%d %d", &a, &b);    // 交换两个变量
    printf("before:a = %d, b = %d\n", a, b); 
    swap(&a, &b);   //传址调用   
    printf("after:a = %d, b = %d\n", a, b);
    return 0;
}

运用指针。

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值