C语言文章更新目录

C/C++学习资源(百度云盘链接)
计算机二级资料(过级专用)
C语言学习路线(从入门到实战)
编写C语言程序的7个步骤和编程机制
C语言基础-第一个C程序
C语言基础-简单程序分析
VS2019编写简单的C程序示例
简单示例,VS2019调试C语言程序
C语言基础-基本算法
C语言基础-数据类型
C语言中的输入输出函数
C语言流程控制语句
C语言数组——一维数组
C语言数组——二维数组
C语言数组——字符数组
C语言中常用的6个字符串处理函数
精心收集了60个C语言项目源码,分享给大家

对于一个C程序而言,它所有的命令都包含在函数内。每个函数都会执行特定的任务。有一个特别的函数,名称为main()——该函数是程序启动后,第一个执行的函数。其他所有函数都是main()函数的子函数(或者与之相关联的过程,例如回调函数),并且它们的函数名称可以自己设定。每个函数都只能被定义一次。但一个函数可以根据需要被多次的声明和调用。

函数的定义

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

return_type function_name( parameter list )
{body of the function
}

函数由一个函数头和一个函数主体组成。下面列出一个函数的所有组成部分:

  • 返回类型: 一个函数可以返回一个值。return_type 是函数返回的值的数据类型。有些函数执行所需的操作而不要返回值,在这种情况下,return_type 是关键字 void
  • 函数名称: 这是函数的实际名称。函数名和参数列表一起构成了函数签名。
  • 参数: 参数就像是占位符。当函数被调用时,您向参数传递一个值,这个值被称为实际参数。参数列表包括函数参数的类型、顺序、数量。参数是可选的,也就是说,函数可能不包含参数。
  • 函数主体: 函数主体包含一组定义函数执行任务的语句。

下来看个示例:

int add(int a, int b){int result;rusult = a + b;return result;
}

{}之间的内容则为函数体。

函数的声明和调用

在使用函数之前应该先声明,事先通知编译器该函数的类型:换句话说,一个声明即是描述一个函数的接口。声明至少应指明函数返回值的类型,如下例所示:

int add(int a, int b);

在函数声明中,参数的名称并不重要,只有参数的类型是必需的,因此下面也是有效的声明:

int max(int, int);

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

当程序调用函数时,程序控制权会转移给被调用的函数。被调用的函数执行已定义的任务,当函数的返回语句被执行时,或到达函数的结束括号时,会把程序控制权交还给主程序。

调用函数时,传递所需参数,如果函数返回一个值,则可以存储返回值。

接下来我们再看一个示例:

#include <stdio.h>/* 函数声明 */
int max(int num1, int num2);int main()
{/* 局部变量定义 */int a = 100;int b = 200;int ret;/* 调用函数来获取最大值 */ret = max(a, b);printf("Max value is : %d\n", ret);return 0;
}/* 函数返回两个数中较大的那个数 */
int max(int num1, int num2)
{/* 局部变量声明 */int result;if (num1 > num2)result = num1;elseresult = num2;return result;
}

运行结果如下:

函数调用这一块我想着重说下递归调用

所谓递归,就是自己调用自己。C语言中函数可以直接或间接的调用自己,所谓的间接调用,是指在递归函数调用的下层函数中再调用自己,递归关系如下图:

  • 直接调用

  • 间接调用

语法格式如下:

void recursion()
{statements;... ... ...recursion(); /* 函数调用自身 */... ... ...
}int main()
{recursion();
}

流程图:

下来我们一起看一个关于函数递归调用的示例

//下面的实例使用递归函数生成一个给定的数的斐波那契数列:
#include <stdio.h>int fibonaci(int i)
{if(i == 0){return 0;}if(i == 1){return 1;}return fibonaci(i-1) + fibonaci(i-2);
}int  main()
{int i;for (i = 0; i < 10; i++){printf("%d\t\n", fibonaci(i));}return 0;
}

函数运行结果:

关于函数今天就先介绍到这,后面继续更新。。。

如果您觉得本篇文章对您有帮助,请转发给更多的人
C语言中文社区】是一个C语言/C++视频教程、学习笔记、电子书、计算机二级资料等专注于C语言/C++编程学习者的干货知识分享平台,精选深度文章,分享优秀干货类、技能类的学习资源,帮助学习中的你。

C语言核心技术——函数相关推荐

  1. 写的函数符号表里没有_你有没有想过,C语言 main 函数到底为啥这么写?

    但凡是学过C语言的人,都知道要先写main函数,然而很多时候我们看到的main函数却各有差异,这究竟是为啥?哪种是对的呢?今天我们就来聊聊main函数. 那么main函数一共有多少个版本呢? 1.ma ...

  2. R语言str_trim函数去除字符串中头部和尾部的空格

    R语言str_trim函数去除字符串中头部和尾部的空格 目录 R语言str_trim函数去除字符串中头部和尾部的空格 #导入包和库 #仿

  3. R语言sqrt函数为数值开平方根实战

    R语言sqrt函数为数值开平方根实战 目录 R语言sqrt函数为数值开平方根实战 #基本语法 #sqrt函数开平方根

  4. R语言数学函数:abs绝对值、sqrt平方根、ceiling向上近似整数、floor向下近似整数、trunc去除小数部分、round近似到指定小数位、signif近似到有效数字、三角函数、指数、对数

    R语言数学函数:abs绝对值.sqrt平方根.ceiling向上近似整数.floor向下近似整数.trunc去除小数部分.round近似到指定小数位.signif近似到有效数字.三角函数.指数.对数 ...

  5. R语言sd函数计算数值标准差实战(Standard Deviation)

    R语言sd函数计算数值标准差实战(Standard Deviation) 目录 R语言sd函数计算数值标准差实战(Standard Deviation) #基本语法 #sd

  6. R语言optimize函数一维优化实战

    R语言optimize函数一维优化实战 目录 R语言optimize函数一维优化实战 #基础语法 #优化用户自定义的函数

  7. R语言rev函数对数据对象(向量、dataframe通过行或者列)反序实战

    R语言rev函数对数据对象(向量.dataframe通过行或者列)反序实战 目录 R语言rev函数对数据对象(向量.dataframe通过行或者列)反序实战

  8. R语言用户自定义函数的语法结构、编写自定义统计值计算函数(使用ifelse结构计算均值和标准差等)、编写自定义日期格式化(format)函数(switch函数使用不同分枝格式化日期数据)、应用自定函数

    R语言用户自定义函数的语法结构.编写自定义统计值计算函数(使用ifelse结构计算均值和标准差等).编写自定义日期格式化(format)函数(switch函数使用不同分枝格式化日期数据).应用自定函数 ...

  9. R语言merge函数全连接dataframe数据(Full (outer) join)、merge函数进行全连接必须将参数all设置为true(all=TRUE)、默认merge函数通过公共列名合并数

    R语言merge函数全连接dataframe数据(Full (outer) join).merge函数进行全连接必须将参数all设置为true(all=TRUE).默认merge函数通过公共列名合并数 ...

最新文章

  1. 解决bug_赛博朋克2077BUG卡关怎么办?卡关BUG解决办法
  2. [BUUCTF-pwn]——jarvisoj_level2_x64
  3. 单片机小白学步系列(十六) 单片机/计算机系统概述:模块化思想
  4. 微博短视频千万级高可用、高并发架构如何设计?
  5. ogg mysql表结构不一致_OGG-01163 Bad column表结构一致、trail文件meta不一致处理
  6. Hadoop-2.7.3-本地模式安装-wordcount例子
  7. arcgis 10.1 导入数据到oracle 发布地图服务
  8. Java New IO
  9. android fmod,Android采用fmod库实现变声效果
  10. python FTPS使用ftplib下载文件(详细)
  11. LeetCode 372. 超级次方(递归)
  12. 软件测试——风险分析
  13. 如何快速转载网页博客
  14. IT培训机构那些让人恶心的招生手法
  15. 在日本转职需要到入管办理转职手续
  16. karabiner-elements
  17. VBA多条EXCEL记录写入到WORD文档中
  18. Python线性分类
  19. TCHAR字符串的操作
  20. 关于 IO、存储、硬盘和文件系统

热门文章

  1. C++ Primer 5th笔记(chap 14 重载运算和类型转换)算术和关系运算符
  2. 2021年北京高校数学建模校际联赛题目 出版社图书印制策略
  3. `Caused by: java.lang.ClassNotFoundException: javax.xml.bind.DatatypeConverter
  4. Raft 集群成员变更、日志压缩、客户端交互
  5. Kaldi内存泄漏问题排查
  6. android 代码浏览,Webview实现android简单的浏览器实例代码
  7. pr如何处理音效_Pr基础全通关:从0到1,进阶剪辑大神
  8. CreateProcess 重定向CMD实现反弹shell
  9. vector邻接表建图+dijkstra模板
  10. 006 技能数组分析和代码编写