函数的返回值可以不用赋值_C语言学习|函数的应用《一》

54d978d8e8b2879d70cf69746b327901.png

C语言为程序的结构提供了函数和模块

一、函数的定义与使用

《编程之道》中写道:“一个程序应该是灵活自由的、它的子过程就像串在一根线子上的珍珠。”子过程在C语言中被称为”函数“。程序的执行从主函数开始,往复、循环、迭代地调用一个又一个函数。

a0b6d83e48ec86a280af06fdf6e510c1.png

函数的分类

1.库函数

printf()、scanf()等都是ANSIC标准的库函数。任何ANSI C的编译器,无论在什么的平台,都必须提供这些函数供用户使用。仅调用ANSI C库函数的程序,具有很好的移植性,能在多种平台上编译运行。还有数量巨大的第三方函数库,完成ANSI C中不包括而又是程序设计需要的功能,例如:微积分运算,数据库和图形界面等。

2.自定义函数

定义一个函数我们需要确定三部分内容:

1.函数的返回值类型

2.函数的名称

3.函数的参数

注:函数名的命名是函数的唯一标识,它的命名规则与变量没什么不同的。

函数定义的语法结构如下:

返回值类型 函数名(类型参数1,类型 参数2)

{

局部变量定义语句

可执行语句序列

}

例子:比较两个整数大小的函数

intMin(int a,int b)

{

int result=(x>y)?y:x;

return result;

}

这里定义名为Min的函数。它有两个参数,返回值和参数的类型均为int,函数的作用是比较两个整数那整数小。此例并非一个可运行的程序。有main()函数的程序才能运行;函数必须main()直接或间接调用才能发挥作用。

二、函数的调用、参数、参数传递和返回值

main()函数调用其他函数可以想象成给员工分配任务。

调用函数的实例如下:

比较两个整数的大小程序;

#include<stdio.h>int max(int i,int t){   int result;   result=i>t?i:t;   return result; }int main(){     int a=36;     int b=72;     int larger;     larger=max(a,b);     printf("%d",larger);     return 0; }

程序运行结果

72

在主函数中变量a和b的值作为参数提供给了max()。这时开始执行max(),且把a与b的值分别复制给了max函数定义的i和t,这个过程就是参数传递。max函数内接收的数据的参数(即i和t)叫形式参数,简称形参;调用者提供的参数(主函数的a和b这两个参数)叫实际参数;简称实参。

实参的数据必须与形参的数据相等,它们的类型必须匹配(匹配的原则与变量赋值的原则一致)。形参相当于在函数内定义的变量,也可以被赋值。实参与形参有各自的存储空间,所以形参值得改变不会影响实参。

一个函数可以定义的形参并无明确的数量限制,用户可以按照需要随意定义。

参数的类型也没有限制,任何可用类型均能使用,不同参数可以是不同的类型。例如

int fun(int a,float b,charc){    …} 

这样子写是合法的。

也可以定义没有参数的函数,这种函数不需要调用者提供任何数据,例子

int func(void){    …}

三、主函数main()的特殊性

C语言在设计中注重一致性。

1.一致性体现在各个函数都是平等的,没有主从之分,可以随意相互调用,每个函数都可以调用其他的函数,其他函数也可以在调用其他函数。函数也可以调用自己,被称为”递归函数“;

2.一致性体现在定义各种函数的语法都遵守共同的语法规则。

尽管main函数也有返回值,但是有时在定义main()时,可以不指明其返回值类型,没有参数也可以不用void。这种用法是符合C语言语法,任何函数也都可以如此定义。

关注更多C语言学习|函数的应用《二》

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处:http://www.mzph.cn/news/552026.shtml

如若内容造成侵权/违法违规/事实不符,请联系多彩编程网进行投诉反馈email:809451989@qq.com,一经查实,立即删除!

相关文章

java泛型和类型通配符,java – 泛型,类型参数和通配符

通用类型要了解的主要内容是它们不是协变的。所以你可以这样做:final String string "string";final Object object string;以下将不会编译:final List strings ...final List objects strings;这是为了避免您规避泛型类型的情况&#xff…

python学习指令_由Python到深度学习入门之常用命令

检查Anaconda是否成功安装:conda --version检测目前安装了哪些环境:conda info --envs检查目前有哪些版本的python可以安装:conda search --full-name python安装python 3.5版本(命令中的tensorflow是一个本地电脑的一个python环境名称不是te…

php的yii框架配置,php配置yii框架_PHP教程

个人爱好,研究了下php的yii框架。首先,研究yii框架的前提是下载php的一键安装和zend studio.. php的一键安装给出连接如下http://www.download3k.com/Install-XAMPP.html 。。。zend studion的链接如下http://www.zend.com/en/products/studio/downloads…

python box2d模拟平抛运动_论述如何基于Box2D模拟星球重力效果

作者:Emanuele Feronato随着《Angry Birds Space》的问世,我想你定非常疑惑要如何通过Box2D模拟星球重力。基本原理非常简单。首先,太空没有重力,所以你将通过如下方式创建没有重力的b2World世界:private var world:b2…

蚂蚁庄园 php源码,蚂蚁庄园五体投地

蚂蚁庄园五体投地,蚂蚁庄园小课堂的题目你答对了吗?今天题目有点难,大家可能不清楚,人们常常会对极其敬重的人五体投地,五体投地的五体指的是什么意思呢?“五体”又称“五轮”,指双肘、双膝和额…

python与javascript的区别_python与js区别有哪些

数据类型js和python都是动态语言,a 1; a abc,a这个变量是动态的,类型是随时可以被更改的。而在java中就是静态语言变量,int a 1;a abc 就会报错。基本命令1.输出js里面的console.log()、document.write()、window.…

fsk调制解调实验报告 matlab,基于MATLAB的-FSK调制与解调-通信原理实验

《基于MATLAB的-FSK调制与解调-通信原理实验》由会员分享,可在线阅读,更多相关《基于MATLAB的-FSK调制与解调-通信原理实验(2页珍藏版)》请在人人文库网上搜索。1、实验五 FSK调制与解调1实验目的和要求用MATLAB实现二进制序列的fsk调制与解调2实验内容用…

电脑端二维码识别工具_电脑端自签工具更新,多功能软件一键签名

因为苹果后台的调整,电脑端的自签工具 Cydia Impactor 一直无法使用,如今虽然没有等到大胡子对 Cydia Impactor 适配更新,却等到了全新的替代工具。先说下为什么 Cydia Impactor 为什么让那么多人惦记,虽然对于不越狱安装越狱工具…

python列表是顺序表还是链表_顺序表与链表

Python中的顺序表 Python中的list和tuple两种类型采用了顺序表的实现技术,具有前面讨论的顺序表的所有性质。 tuple是不可变类型,即不变的顺序表,因此不支持改变其内部状态的任何操作,而其他方面,则与list的性质类似。…

python只读模式可以打印嘛_只读python属性?无法打印对象

在Python中,使用自定义描述符可以很容易地做到这一点。在看看HOWTO中的Descriptor Example。如果您只需更改__get__方法来引发一个AttributeError就这样了。我们不妨将其重命名,去掉日志记录,使之更简单。在class WriteOnly(object):"&q…

php 查文件sha1 内存不足,SHA是否足以检查文件重复? (PHP中的sha1_file)

sha1_file足够好吗?使用sha1_file就足够了,碰撞的可能性非常小,但这种情况几乎不会发生.为了减少几乎0比较文件大小的几率:function is_duplicate_file( $file1,$file2){if(filesize($file1) ! filesize($file2)) return false;if( sha1_file($file1) s…

js for foreach 快慢_js基本搜索算法实现与170万条数据下的性能测试

前言今天让我们来继续聊一聊js算法,通过接下来的讲解,我们可以了解到搜索算法的基本实现以及各种实现方法的性能,进而发现for循环,forEach,While的性能差异,我们还会了解到如何通过web worker做算法分片&am…

python获取工作日_Python获取一段日期内的工作日和所有日期

Pandas1、获取工作日:bdate_rangeimport pandas as pde pd.bdate_range(8/7/2019, 8/31/2019)e.date #获取日期列表array([datetime.date(2019, 8, 7), datetime.date(2019, 8, 8),datetime.date(2019, 8, 9), datetime.date(2019, 8, 12),datetime.date(2019, 8, …

iterm php,iTerm2笔记

本文是 iTerm2 的使用笔记,不定期更新。1 注释说明对于 Preferences 的修改,> 表示需要切换选项卡,-> 表示在同一选项卡内2 参考3 杂301 如何随时随地一键调用 Quake-like iTerm2首先声明:由于 Mac OS 本身对窗体「最大化」…

python 正则表达式 sub_python 正则表达式 re.sub re.subn

python正则表达式模块简介Python 自1.5版本起增加了re 模块,它提供 Perl 风格的正则表达式模式。Python 1.5之前版本则是通过 regex 模块提供 Emacs 风格的模式。Emacs 风格模式可读性稍差些,而且功能也不强,因此编写新代码时尽量不要再使用 …

清浊音判别 matlab,matlab语音信号处理如何判别清浊音?

该楼层疑似违规已被系统折叠 隐藏此楼查看此楼这是我一个学长给的程序,他说里面要算得基本上已经实现了改一下就可以用了。。。但是i本人不是主攻matlab的说白了就是不怎么会,,想问下该怎么改来实现判断清浊音的功能。%对语音信号采样分帧cle…

python upper_Python 3中的模块级string.upper函数在哪里?

如何让这段代码在3中运行? 请注意,我不是"foo".upper()在字符串实例级别询问。import string try: print("string module, upper function:") print(string.upper) foo string.upper("Foo") print("foo:%s" % …

python数据科学实践 常象宇_Python数据科学实践

章基于Python的数据科学环境搭建1.1Python是数据科学“大势所趋”1.2Anaconda入门——工欲善其事,必先利其器1.3JupyterNotebook入门1.4Markdown单元格的使用1.5Spyder入门1.6小结第2章Python基础2.1“火锅团购数据”简介2.2读写数据2.3Python数据类型与结构2.4控制…

matlab emd功率谱密度,【脑电信号分类】脑电信号提取PSD功率谱密度特征

脑电信号是一种非平稳的随机信号,一般而言随机信号的持续时间是无限长的,因此随机信号的总能量是无限的,而随机过程的任意一个样本函数都不满足绝对可积条件,所以其傅里叶变换不存在。不过,尽管随机信号的总能量是无限…

小甲鱼python课后题简书_Python练习题100道

1.有四个数字:1,2,3,4,能组成多少个互不相同且无重复数字的三位数?各是多少? 方法一:遍历所有可能,把重复的剃掉。 total0 for i in range(1,5): for j in range(1,5): for k in range(1,5): if((i!j)and(j…