C语言核心技术——函数
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语言核心技术——函数相关推荐
- 写的函数符号表里没有_你有没有想过,C语言 main 函数到底为啥这么写?
但凡是学过C语言的人,都知道要先写main函数,然而很多时候我们看到的main函数却各有差异,这究竟是为啥?哪种是对的呢?今天我们就来聊聊main函数. 那么main函数一共有多少个版本呢? 1.ma ...
- R语言str_trim函数去除字符串中头部和尾部的空格
R语言str_trim函数去除字符串中头部和尾部的空格 目录 R语言str_trim函数去除字符串中头部和尾部的空格 #导入包和库 #仿
- R语言sqrt函数为数值开平方根实战
R语言sqrt函数为数值开平方根实战 目录 R语言sqrt函数为数值开平方根实战 #基本语法 #sqrt函数开平方根
- R语言数学函数:abs绝对值、sqrt平方根、ceiling向上近似整数、floor向下近似整数、trunc去除小数部分、round近似到指定小数位、signif近似到有效数字、三角函数、指数、对数
R语言数学函数:abs绝对值.sqrt平方根.ceiling向上近似整数.floor向下近似整数.trunc去除小数部分.round近似到指定小数位.signif近似到有效数字.三角函数.指数.对数 ...
- R语言sd函数计算数值标准差实战(Standard Deviation)
R语言sd函数计算数值标准差实战(Standard Deviation) 目录 R语言sd函数计算数值标准差实战(Standard Deviation) #基本语法 #sd
- R语言optimize函数一维优化实战
R语言optimize函数一维优化实战 目录 R语言optimize函数一维优化实战 #基础语法 #优化用户自定义的函数
- R语言rev函数对数据对象(向量、dataframe通过行或者列)反序实战
R语言rev函数对数据对象(向量.dataframe通过行或者列)反序实战 目录 R语言rev函数对数据对象(向量.dataframe通过行或者列)反序实战
- R语言用户自定义函数的语法结构、编写自定义统计值计算函数(使用ifelse结构计算均值和标准差等)、编写自定义日期格式化(format)函数(switch函数使用不同分枝格式化日期数据)、应用自定函数
R语言用户自定义函数的语法结构.编写自定义统计值计算函数(使用ifelse结构计算均值和标准差等).编写自定义日期格式化(format)函数(switch函数使用不同分枝格式化日期数据).应用自定函数 ...
- R语言merge函数全连接dataframe数据(Full (outer) join)、merge函数进行全连接必须将参数all设置为true(all=TRUE)、默认merge函数通过公共列名合并数
R语言merge函数全连接dataframe数据(Full (outer) join).merge函数进行全连接必须将参数all设置为true(all=TRUE).默认merge函数通过公共列名合并数 ...
最新文章
- 解决bug_赛博朋克2077BUG卡关怎么办?卡关BUG解决办法
- [BUUCTF-pwn]——jarvisoj_level2_x64
- 单片机小白学步系列(十六) 单片机/计算机系统概述:模块化思想
- 微博短视频千万级高可用、高并发架构如何设计?
- ogg mysql表结构不一致_OGG-01163 Bad column表结构一致、trail文件meta不一致处理
- Hadoop-2.7.3-本地模式安装-wordcount例子
- arcgis 10.1 导入数据到oracle 发布地图服务
- Java New IO
- android fmod,Android采用fmod库实现变声效果
- python FTPS使用ftplib下载文件(详细)
- LeetCode 372. 超级次方(递归)
- 软件测试——风险分析
- 如何快速转载网页博客
- IT培训机构那些让人恶心的招生手法
- 在日本转职需要到入管办理转职手续
- karabiner-elements
- VBA多条EXCEL记录写入到WORD文档中
- Python线性分类
- TCHAR字符串的操作
- 关于 IO、存储、硬盘和文件系统
热门文章
- C++ Primer 5th笔记(chap 14 重载运算和类型转换)算术和关系运算符
- 2021年北京高校数学建模校际联赛题目 出版社图书印制策略
- `Caused by: java.lang.ClassNotFoundException: javax.xml.bind.DatatypeConverter
- Raft 集群成员变更、日志压缩、客户端交互
- Kaldi内存泄漏问题排查
- android 代码浏览,Webview实现android简单的浏览器实例代码
- pr如何处理音效_Pr基础全通关:从0到1,进阶剪辑大神
- CreateProcess 重定向CMD实现反弹shell
- vector邻接表建图+dijkstra模板
- 006 技能数组分析和代码编写