0
  • 聊天消息
  • 系统消息
  • 评论与回复
登录后你可以
  • 下载海量资料
  • 学习在线课程
  • 观看技术视频
  • 写文章/发帖/加入社区
创作中心

完善资料让更多小伙伴认识你,还能领取20积分哦,立即完善>

3天内不再提示

函数与递归-1

汽车电子技术 来源:微亮笔记 作者: PASSION 2023-02-21 15:50 次阅读

本期介绍C语言函数与递归部分的笔记。在我看来,如果说各种循环与分支是一个系统的骨架的话,那么形式繁多的函数就是C语言的血肉了,正是各式各样的函数决定了C语言的各种功能。那么话不多说,既然函数如此重要,那就快跟我一起了解函数吧图片图片(ps:此部分内容较多,将会分成多期来更新吖)

本章主要掌握函数的基本使用和递归

1.函数是什么

2.库函数的定义及使用查找方法

3.自定义函数的定义及使用方法

4.函数参数的类型

  • 函数是什么?-----“子程序

    在计算机科学中,子程序是一个大型程序中的部分代码,由一个或多个语句块组成。它负责完成某项特定任务,而且相较于其他代码来说具备相对的独立性。

    一般会有输入参数并有返回值,提供对过程的封装和对细节的隐藏。这些代码通常被集成为软件库。C语言函数分为两类:库函数和自定义函数。

  • 库函数

    为什么会存在库函数?

    我们在编写代码时,总会频繁地使用一些基本的功能,比如打印(printf),字符拷贝(strcpy),n的k次方数学运算(pow)..........当我们需要使用这些功能时,如果临时编写就会很麻烦,为了支持可移植性和提高程序的效率,C语言的基础库中提供了一系列库函数,方便大家进行程序开发。

    库函数的种类和数量有很多,在使用时我们不需要也不可能将所有的库函数使用方法及细节全部背下来,只需要像查字典一样用一个查一个就行了图片图片

    那么C语言的字典是什么呢?下面我会提供几个权威的网站供大家参考,链接如下:

    http://cplusplus.com

    http://cppreference.com

    以上网站都非常实用奥~~~

    当然我们在使用库函数之前一定要记住先声明用**#include**所引用的头文件,比如在使用printf函数时需引用,使用pow函数时需引用头文件等等,这些在上述网站也是可以查到的图片图片

  • 自定义函数

    库函数虽功能强大,但还是远远无法满足我们编程需求

    所以更重要的是 自定义函数

    自定义函数和库函数一样,有函数名,返回值类型和函数参数。但不一样的是这些都需要我们自己来设计,这就给了程序员很大的发挥空间,话不多说,我们接下来动手写一个简单的自定义函数:

  • void swap(int x,int y)//返回值类型,函数名,函数参数
    {
      int tmp=0;
      tmp=x;
      x=y;
      y=tmp;
    }//函数体
    

    这样,我们就完成了一个函数,它的功能是交换两个参数的值,但这个函数在具体使用时仍有问题,不过它可以帮助我们了解自定义函数的几大要素:返回值类型 ,函数名,函数参数和函数主体。

    需要注意的是,由于是“自定义”函数,我们在起名时可以像给游戏角色起名一样随意起,但是并不推荐大家这样做,举个栗子图片

int add(int x,int y)
{
  int z=0;
  z=x-y;
  return z;
  }

这样我们就定义了一个看似非常"合理"的函数,说它合理是因为此函数完全符合自定义函数定义规则,但是我们把一个执行减法功能的函数命名为“add”,这显然会引起歧义,为了使我们的代码具有可移植性并且提高程序的运行效率,我推荐大家根据函数功能来命名图片图片

函数的参数

实际参数(实参)

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

** 形式参数(形参)**

形式参数是指函数在定义时括号中的变量,因为参数形式只有函数被调用的过程才实例化,所以叫形式参数。形式参数在函数调用完成后就自动销毁了。因此形式参数只在函数中有效。

只看定义当然很难理解,我们上函数图片图片

int get_max(int x,int y)//括号内是形式参数
{
  if (x>y)
    return 0;
  else
    return y;
 }//以上是对一个自定义函数的定义过程
 int main()
 {
   int a=10;
   int b=20;
   int max=get_max(a,b);//实际参数,必须有实际的值,可以放变量
   printf("max=%d",max)
   max=get_max(100,300+1);//也可以放实际的值
   max=get_max(100,get_max(3,7));//还可以放另一个函数
   printf("max=%d",max);
 }

大家如果还是觉得难以理解,那我举个具体的例子:

求一个长方形的面积,我们首先要套用公式“s=a*b”

比如该长方形长是5,宽是4,我们就要将5和4带入到上面的公式里得出面积为5*4=20

在上述过程中,a,b就是形式参数,而具体的值像4,5就是实际参数

在使用时实际参数要把值传递给形式参数,在函数体内进行相应运算后得出结果再传递出来。这就是函数调用的其中一种方式:传值调用。而这里就涉及到了函数的调用,篇幅有限,我们下期再继续介绍相关知识,这里就不赘述了

ok,到此我们本期的内容就结束了,祝大家寒假愉快!图片图片

声明:本文内容及配图由入驻作者撰写或者入驻合作网站授权转载。文章观点仅代表作者本人,不代表电子发烧友网立场。文章及其配图仅供工程师学习之用,如有内容侵权或者其他违规问题,请联系本站处理。 举报投诉
  • C语言
    +关注

    关注

    180

    文章

    7530

    浏览量

    128763
  • 函数
    +关注

    关注

    3

    文章

    3880

    浏览量

    61310
  • 循环
    +关注

    关注

    0

    文章

    91

    浏览量

    15855
收藏 人收藏

    评论

    相关推荐

    数据结构与算法:1-4-1-函数递归(1)#结构数据

    数据结构与算法
    学习硬声知识
    发布于 :2022年12月18日 10:14:48

    Labview递归函数的使用案例

    Labview递归函数的使用案例,简单的1+2+3...+100求和,简单易懂,充分理解递归函数的思想
    发表于 10-09 09:37

    C++教程之函数递归调用

    C++教程之函数递归调用 在执行函数 f 的过程中,又要调用 f 函数本身,称为函数递归
    发表于 05-15 18:00 35次下载

    现代C函数式编程

    和技巧,同时也体现了现代C++的强大威力和无限可能。 概述 函数式编程是一种编程范式,它有下面的一些特征: 函数是一等公民,可以像数据一样传来传去。高阶函数递归pipeline惰性求值
    发表于 09-30 16:43 2次下载

    函数式编程语言、编程和程序验证

    是1930年代在调查函数定义、函数应用和递归时研发的一个形式系统,是等价于图灵机的一种抽象的计算模型,许多函数式编程语言都可看成是在演算基础上精心制作出的结果
    发表于 04-03 11:01 3次下载

    通过PICC编译环境下,对PIC单片机程序进行操作研究

    PICC基本上符合ANSI标准,但是不支持函数递归调用,其主要原因是PIC单片机特殊的堆栈结构。PIC单片机中的堆栈是硬件实现的,其深度已随芯片固定,无法实现需要大量堆栈操作的递归算法;另外在PIC单片机中实现软件堆栈的效率也
    的头像 发表于 09-25 15:53 3391次阅读
    通过PICC编译环境下,对PIC单片机程序进行操作研究

    C++语言入门教程之C++语言程序设计函数的详细资料概述免费下载

    本文档的主要内容详细介绍的是C++语言入门教程之C++语言程序设计函数的详细资料概述免费下载内容包括了:1 函数的定义和使用2 函数的参数传递3 函数的嵌套调用4
    发表于 09-20 14:51 23次下载

    递归指的是在函数的定义中使用函数自身的方法

    C语言支持递归,即一个函数可以调用其自身。但在使用递归时,程序员需要注意定义一个从函数退出的条件,否则会进入死循环。递归
    的头像 发表于 11-12 15:06 6827次阅读

    C++的实验教程之函数递归算法资料免费下载

    函数递归算法 1.范例:求组合数, 一、实验目的1. 学会解决简单的递归算法。2. 掌握函数的嵌套调用。
    发表于 01-29 10:51 2次下载
    C++的实验教程之<b class='flag-5'>函数</b>的<b class='flag-5'>递归</b>算法资料免费下载

    C语言-内联函数递归函数、指针函数

    这篇文章介绍C语言的内联函数递归函数函数指针、指针函数、局部地址、const关键字、extern关键字等知识点;这些知识点在实际项目开发
    的头像 发表于 08-14 10:03 1372次阅读

    Python支持递归函数

    Python支持递归函数——即直接或间接地调用自身以进行循环的函数递归是颇为高级的话题,并且它在Python中相对少见。然而,它是一项应该了解的有用的技术,因为它允许程序遍历拥有任意
    的头像 发表于 02-21 14:28 426次阅读

    函数递归-2

    传址调用是把函数外部创建变量的内存地址传递给函数参数的一种调用函数的方式 此传参方式可以让函数函数外面的变量建立起真正的联系。也就是说,
    的头像 发表于 02-21 15:53 334次阅读
    <b class='flag-5'>函数</b>与<b class='flag-5'>递归</b>-2

    函数递归-3

    程序调用自身的编程技巧称为递归(recursion)。递归作为一种算法在程序设计语言中广泛应用。一个过程或函数在其定义或说明中有直接或间接调用自身的一种方法,它通常把一个大型复杂的问题层层转化
    的头像 发表于 02-21 15:57 391次阅读

    什么是Python的递归函数

    递归函数必须有终止条件。编程中,函数的调用要占用名叫栈(stack)的内存空间。调用函数时,程序会将相关的数据存储到计算机的栈里。
    的头像 发表于 02-23 10:25 1256次阅读

    递归函数计算斐波那契数列中的第n项值

    编写一个递归函数,用于计算斐波那契数列中的第n项值,并在主函数中调用该函数输出斐波那契数列的前15项。
    的头像 发表于 06-07 11:30 1897次阅读