当前位置: 首页 > article >正文

五、函数的介绍

1、为什么需要函数

(1)当程序足够简单时,一个main函数就可以实现所有功能。随着程序功能的增加、复杂化,超出人的大脑的承受范围,这时一个main函数可能就逻辑不清了。这是就需要把一个大程序分成许多小的模块来组织,于是乎出现了概念叫做函数。

(2)函数就是一组一起执行一个任务或功能的语句。举例:就相当于一篇文章要分段一样,一个程序可以分成不同的函数,每个函数执行一个特定的功能。

(3)每个C程序都至少有一个函数,即主函数 main() 。主函数是一种特别的函数,特别之处在于,一个C语言程序必须有一个main函数。C语言规定,一个C语言程序从主函数开始执行,到主函数执行完结束。

(4)C 标准库提供了大量的程序可以调用的内置函数。例如,函数 strcat() 用来连接两个字符串,函数 memcpy() 用来复制内存到另一个位置。

2、函数的定义

(1)C 语言中的函数定义的一般形式如下:

return_type function_name( parameter list )
{
   body of the function  // 函数体
}

(2)在 C 语言中,函数由一个函数头和一个函数主体组成。函数的所有组成部分:

  • 返回类型:一个函数可以返回一个值。return_type 是函数返回的值的数据类型。有些函数执行所需的操作而不返回值,在这种情况下,return_type 是关键字 void
  • 函数名称:函数的实际名称。
  • 参数:当函数被调用时,所需要的原始数据就是参数。参数包括函数参数的类型、顺序、数量。参数是可选的,也就是说,函数可能不包含参数,也可能包含多个参数。
  • 函数体:函数体包含一组定义函数执行功能的语句。

(3)函数定义决定了的函数的功能,提供了函数的实际主体。

3、函数的声明

(1)函数声明实际上是叫函数原型声明。什么叫原型?函数的原型包含三部分:函数名,返回值类型,函数参数列表。通俗讲,函数原型就是这个函数叫什么,接收什么类型的几个参数,返回一个什么样的返回值。

(2)函数声明的目的是告诉编译器函数的名称、返回类型和参数。函数定义提供了函数的实际主体。

4、函数的调用

(1)创建 C 函数时,会定义函数做什么,然后通过调用函数来完成已定义的任务。

(2)函数调用就是使用函数名来调用函数完成功能。调用时必须参照原型给函数传参,然后从函数得到适当的返回值作为结果。

5、库函数

(1)库函数就是别人写好的,可以直接调用的函数。例如C语言的标准库。

(2)在C语言中写代码时可以引用库函数,但是必须使用#include引用这个库函数所在的头文件。

6、函数参数

6.1、形参和实参

(1)形参

  • 全称为形式参数。在函数定义和函数声明中的参数,都是形参。
  • 形参不是实际存在的变量

(2)实参

  • 全称为实际参数,函数调用中,实际传递给函数的变量就是实参。
  • 实参可以是常量、变量、表达式、函数等, 无论实参是何种类型的量,在进行函数调用时,它们都必须具有确定的值, 以便把这些值传送给形参。

(3)函数调用的过程,其实就是实参传递给形参的一个过程。这个传递实际是一次拷贝。实参本身并没有进入到函数内,而是把自己的值复制了一份传给了函数中的形参,在函数中参与运算。

6.2、传值调用&引用调用

调用类型描述
传值调用该方法把参数的实际值复制给函数的形式参数。在这种情况下,修改函数内的形式参数不会影响实际参数。
引用调用通过指针传递方式,形参为指向实参地址的指针,当对形参的指向操作时,就相当于对实参本身进行的操作。


http://www.kler.cn/a/132250.html

相关文章:

  • 大数据毕业设计选题推荐-机房信息大数据平台-Hadoop-Spark-Hive
  • 初识MongoDB及安装
  • Struts 类型转换之局部和全局配置
  • Redis:java和SpringBoot中使用Redis
  • 小程序里面循环使用ref的话获取不到
  • java:springboot单元测试spring-boot-starter-test
  • UnoCss(原子化css引擎) 让你的开发更轻松愉快
  • 通信原理板块——奇偶监督码、方阵码、恒比码、正反码
  • 千年TGS服务器日志报错如何解决
  • Typora for Mac:打造全新文本编辑体验
  • 【广州华锐互动】VR技术助力中小学生安全教育,让学生在虚拟世界中学会自我保护!
  • 大带宽服务器需要选择哪些节点
  • Pattern Recognition投稿经验
  • mysql添加外键
  • Python-pptx教程之二操作已有PPT模板文件
  • 分布式任务调度-XXL-job
  • EasyExcel导入从第几行开始
  • 【深度学习】pytorch快速得到mobilenet_v2 pth 和onnx
  • 大型语言模型中的幻觉研究综述:原理、分类、挑战和未决问题11.15+11.16+11.17
  • 【蓝桥杯 第十五届模拟赛 Java B组】训练题(A - I)