还剩28页未读,继续阅读
本资源只提供10页预览,全部文档请下载后查看!喜欢就下载吧,查找使用更方便
文本内容:
REPORTING2023WORK SUMMARY《函数c语言》ppt课件•C语言函数概述•C语言标准库函数目录•自定义C语言函数•函数重载与覆盖CATALOGUE•函数递归•函数内存管理PART01C语言函数概述函数定义与声明函数定义定义函数的过程,包括函数名、参数列表和函数体函数声明在程序中提前声明函数,告诉编译器函数的名称、返回类型和参数类型等信息函数参数必需参数在调用函数时必须提供的参数,用于传递数据给函数可选参数在调用函数时可以选择提供的参数,用于提供额外的数据给函数函数返回值返回值类型指定函数返回值的类型,可以是任意数据类型,如int、float、char等返回值的作用将函数执行的结果返回给调用者,或者将函数的执行状态告知调用者PART02C语言标准库函数数学函数010203数学函数示例描述用于进行数学运算,如三计算平方根、余弦值、自这些函数在数学计算中非角函数、指数函数、对数然对数等常有用,可以简化复杂的函数等数学运算过程字符串处理函数字符串处理函数示例描述用于对字符串进行操作,将字符串转换为大写、查字符串处理在程序设计中如字符串连接、字符串比找子字符串、连接两个字非常重要,这些函数提供较、字符串转换等符串等了方便快捷的字符串操作方式输入输出函数输入输出函数描述输入输出函数是程序与外部世界交互用于从输入设备读取数据或向输出设的桥梁,对于数据的输入和输出操作备写入数据至关重要示例读取键盘输入、写入文件、格式化输出等PART03自定义C语言函数函数实现函数体在函数体中编写实现函数功能的代函数定义码首先需要定义函数的名称、返回类型和参数列表返回值根据函数定义,在函数体中返回相应的值函数调用函数调用语法参数传递返回值处理使用函数名和括号,并在括号内将实际参数传递给函数中的形参,根据函数定义,处理函数的返回提供参数(如果有的话)以便在函数内部使用值函数参数传递值传递通过值传递参数,函数接收参数的副本,对副本的修改不会影响原始数据引用传递通过引用传递参数,函数接收参数的引用,对引用的修改将影响原始数据指针传递通过指针传递参数,函数接收参数的指针,对指针指向的数据的修改将影响原始数据PART04函数重载与覆盖函数重载函数重载是指在同一作用域内,可以定义多个同名函数,只要它们的参数列表不同即可函数重载可以提高代码的可读性和可维护性,因为可以使用相同的函数名来执行不同的操作在C语言中,函数重载是通过编译器的类型检查来实现的,编译器会根据函数的参数类型和数量来区分不同的函数函数覆盖在C中,函数覆盖是通过虚函数表来函数覆盖是指在派生类中重新定义基实现的,编译器会为每个含有虚函数类中的虚函数的类生成一个虚函数表,表中包含了该类中所有虚函数的地址函数覆盖可以实现运行时的多态性,即根据实际对象的类型来调用相应的函数PART05函数递归递归函数定义递归函数定义递归函数是指在其定义中调用自身的函数递归函数必须有一个明确的结束条件,当满足该条件时,递归将停止递归函数的特点递归函数具有简洁的代码实现和易于理解的特点,能够解决一些复杂的问题递归函数在处理重复或分层的问题时非常有用递归函数的分类根据递归调用的方式,递归函数可以分为直接递归和间接递归直接递归是指函数在其定义中直接调用自身,而间接递归则是通过其他函数间接地调用自身递归函数实现递归函数的实现原理递归函数的实现基于栈原理每次函数调用都会在栈中保存相关信息,包括函数的参数、局部变量等当函数返回时,这些信息将从栈中弹出并恢复到调用前的状态递归函数的参数传递在递归函数中,参数传递是通过栈进行的每个递归调用都会在栈中保存其参数值,以便在返回时使用这使得递归函数能够处理嵌套的数据结构,如二叉树、图等递归函数的性能优化虽然递归函数具有简洁的代码实现和易于理解的特点,但在处理大规模数据时可能会导致栈溢出或性能下降因此,在实际应用中需要对递归函数进行性能优化,如使用迭代替代递归、减少递归深度等递归函数调用递归函数调用的执行流程当程序执行到递归函数的调用时,会将当前的上下文信息保存到栈中,然后跳转到该函数的定义处执行当满足结束条件时,递归调用返回,并将之前保存的上下文信息从栈中弹出,恢复到调用前的状态递归调用的应用场景递归调用的应用场景非常广泛,如二叉树的遍历、图的搜索、排序算法等在这些场景中,递归函数能够将问题分解为更小的子问题,从而简化问题的解决过程避免无限递归在编写递归函数时,必须注意设置明确的结束条件,以避免无限递归导致程序崩溃如果未设置正确的结束条件或逻辑错误导致无限递归,程序将无法正常执行并最终崩溃PART06函数内存管理栈内存管理栈内存的特点先进后出(FILO)原则快速分配和释放栈内存管理由操作系统自动管理栈内存的用途存储局部变量栈内存管理01020304存储函数调用的返回地址栈溢出问题解决方法限制递归深度、减当局部变量过多或递归深度过少局部变量数量、使用栈空间深时,可能导致栈溢更大的数据类型堆内存管理堆内存的特点动态分配和释放需要程序员手动管理堆内存管理可能产生内存碎片01堆内存的用途02存储全局变量和静态变量03堆内存管理动态分配的内存空间1堆内存管理问题2内存泄漏未及时释放已分配的内存空间3堆内存管理野指针指向已释放的内存空间或无效的内存空间解决方法使用智能指针、手动跟踪内存分配和释放、使用内存检测工具REPORTING2023WORK SUMMARYTHANKS感谢观看。