C语言函数之—函数的分类_c语言函数的分类-程序员宅基地

技术标签: c语言  开发语言  

目录

1. 函数是什么?

2. C语言中的函数分类 

2.1 库函数

2.1.1 为什么会有库函数?

2.1.2 那怎么来学习库函数呢?

IO函数—getchar() , putchar()

字符串操作函数—strcmp() , strlen()

rand函数,srand函数 和time函数

2.1.3 如何学会使用库函数?

2.2 自定义函数

2.2.1 函数组成


1. 函数是什么?

在数学中我们学习了常见的数学函数如:y=f(x)。但在C语言中你了解函数吗?

基维百科中对函数的定义:子程序

(1).在计算机科学中,子程序(英语:Subroutine, procedure, function, routine, method,
subprogram, callable unit),是一个大型程序中的某部分代码, 由一个或多个语句块组
成。它负责完成某项特定任务,而且相较于其他代 码,具备相对的独立性。
(2).一般会有输入参数并有返回值,提供对过程的封装和细节的隐藏。这些代码通常被集成为软件库。

2. C语言中的函数分类 

2.1 库函数

2.1.1 为什么会有库函数?

1. 我们知道在我们学习C语言编程的时候,总是在一个代码编写完成之后迫不及待的想知道结果,想把这个结果打印到我们的屏幕上看看。这个时候我们会频繁的使用一个功能:将信息按照一定的格式打印到屏幕上(printf)。
2. 在编程的过程中我们会频繁的做一些字符串的拷贝工作(strcpy)。
3. 在编程是我们也计算,总是会计算n的k次方这样的运算(pow)。

像上面我们描述的基础功能,它们不是业务性的代码。我们在开发的过程中每个程序员都可能用的到,为了支持可移植性和提高程序的效率,所以C语言的基础库中提供了一系列类似的库函数,方便程序员进行软件开发。

2.1.2 那怎么来学习库函数呢?

这里推荐一个库函数学习网站:www.cplusplus.com

简单的总结,C语言常用的库函数都有:

我们参照文档来一起学习几个库函数吧。

首先我们先看一下www.cplusplus.com网站中的布局和各个布局表达的意思(需要一定的英语阅读能力)。

 注:使用库函数,必须包含 #include 对应的头文件

下面我们对照上面的文档来一起学习几个库函数吧。

IO函数—getchar() , putchar()

 这里肯定会有人疑惑,getchar既然是输入读取字符的,为什么返回的类型是int呢?

(1).getchar其实返回的是字符的ASCll码值(整数)。

(2).getchar在读取结束或失败的时候,会返回EOF。

EOF:意思是end of file 本质上是一个 -1

 putchar是输出一个字符在屏幕上

代码演示:

 这里主要是认识怎么使用库函数,暂不深入了解怎么使用

需调用头文件:#include<stdio.h>

字符串操作函数—strcmp() , strlen()

 strcmp 比较两个字符串的大小。

 返回类型为int,参数为两个需要比较的数组。

 str1<str2        return < 0

 str1>str2        return > 0

 str1=str2        return = 0

代码演示:

 

 需调用头文件:#include<strinf.h>

 strlen 求字符串长度(不包括\0)

需调用头文件:#include<string>

 代码演示:

我这里用了一个int来接收它的返回值,会报一个警告。如果不想报这个警告我们可以强制类型转换一下。

 这样就不会报警告

rand函数,srand函数 和time函数

 rand函数是专门用来生成随机数的。

返回值就是生成的随机数。

rand函数返回的是0~RAND_MAX(32767)之间的一个随机数  RAND_MAX=0x7fff(32767)

 rand函数在使用之前要使用一个srand函数来设置随机数的生成器

srand函数在程序中只要调用一次就可以了,不需要频繁调用

需调用头文件:#include<stdlib.h>

代码演示:

 这里会发现每次生成的随机数都是一样的,那是因为srand函数是一个设置随机数的生成器,如果scand的参数固定 了,我们生成的随机数也就会是一样的,这里我们就要用到time函数。

 time 函数会生成一个时间戳

返回类型为unsigned int  ,参数为指针参数

什么是时间戳呢?

时间戳是指格林威治时间1970年01月01日00时00分00秒起至当下的总秒数。

需调用头文件:#include<time.h>

 代码结合使用:

这样我们就可以每次都生成一个不一样的随机数。 

暂就先列举这些库函数,还有很多的其他库函数需要我们慢慢摸索

2.1.3 如何学会使用库函数?

需要全部记住吗?No
需要学会查询工具的使用:
MSDN(Microsoft Developer Network)
www.cplusplus.com
http://en.cppreference.com(英文版)
http://zh.cppreference.com(中文版)
英文很重要。最起码得看懂文献。

2.2 自定义函数

如果库函数能干所有的事情,那还要程序员干什么?
所有更加重要的是自定义函数。
自定义函数和库函数一样,有函数名,返回值类型和函数参数。
但是不一样的是这些都是我们自己来设计。这给程序员一个很大的发挥空间.

2.2.1 函数组成

 注:*无其他意义,仅表示省略作用

简单举一个例子:用函数求两个数的和

 函数的分类就写到这里了,感谢各位大佬的观看,也请大佬多多指点,谢谢!

版权声明:本文为博主原创文章,遵循 CC 4.0 BY-SA 版权协议,转载请附上原文出处链接和本声明。
本文链接:https://blog.csdn.net/qq_74009838/article/details/127600009

智能推荐

lua遍历文件夹_lua 遍历文件夹改名-程序员宅基地

文章浏览阅读5.3k次。1.遍历文件下所有的lua文件,这个可以改的,要用luaforwindow,才能执行--dofile("F:/Program_Files/Lua/lua_script/csvtolua/get_csv.lua")require"lfs" function findindir (path, wefind, r_table, intofolder) for file in lf_lua 遍历文件夹改名

Excel?最强国产开源在线表格 Luckysheet 走红GitHub!_github 开源共享表格-程序员宅基地

文章浏览阅读9.4k次。目前比较流行的办公应用主要有Excel、WPS、石墨文档等等。今天,要和大家推荐一款功能强大、配置简单、完全开源的用纯 JavaScript 编写的前端表格库!Luckysheet具备了大部分Excel中的常用功能,比如文字与单元格的样式调整与公式的使用等。除此之外还提供了独有的复制时转换格式(比如 json 等)以及其他格式的数据导入导出等,可以说Excel具备的常用功能它也都有了。此外,因为Luckysheet采用纯JavaScript编写,因此它可以嵌入到任何前端项目或应用程序中,便于实现_github 开源共享表格

ck11N bapi(function) ----CK_F_MATERIAL_CALC-程序员宅基地

文章浏览阅读1.7k次。CALLFUNCTION'CK_F_MATERIAL_CALC'EXPORTINGklvar=lv_klvar"iv_klvarmatnr=iv_matnrwerks=iv_werkstvers=lv_tvers"iv_tverskadat=sy-datumbwdat=sy-datums_dun..._ck11n bapi

shiro学习——整合jwt时全局异常处理器无法处理JWTFilter中抛出的异常_jwt 和shiro 异常-程序员宅基地

文章浏览阅读4.5k次,点赞13次,收藏20次。springboot+shiro+jwt全局异常处理器无法处理JWTFilter中抛出的异常一、shiro中会出现的异常1、 AuthencationException2、 AuthorizationException二、为什么无法被全局异常处理器处理三、解决方案1、把统一返回的信息写入response中2、使用重定向到处理该错误的controller中一、shiro中会出现的异常1、 AuthencationExceptionAuthenticationException 异常是Shiro在登录认_jwt 和shiro 异常

linux tar -xvf命令,linux tar命令使用详解-程序员宅基地

文章浏览阅读1.8w次。转自:http://blog.csdn.net/ericbaner/article/details/3966741Linux下最常用的打包程序就是tar了,使用tar程序打出来的包我们常称为tar包,tar包文件的命令通常都是以.tar结尾的。生成tar包后,就可以用其它的程序来进行压缩了,所以首先就来讲讲tar命令的基本用法:tar命令的选项有很多(用man tar可以查看到),但常用的就那么几..._tar -xvf

Android-Intent详解与汇总-程序员宅基地

文章浏览阅读80次。1、简介Android中提供了Intent机制来协助应用间的交互与通讯,Intent负责对应用中一次操作的动作、动作涉及数据、附加数据进行描述,Android则根据此Intent的描述,负责找到对应的组件,将Intent传递给调用的组件,并完成组件的调用。Intent不仅可用于应用程序之间,也可用于应用程序内部的Activity/Service之间的交互。因此,Intent在这里起..._intent not from weixin msg

随便推点

使用CryptoJS中的AES实现加解密(前端后端)_cryptojs.aes-程序员宅基地

文章浏览阅读3.1k次,点赞2次,收藏4次。最近为了解决项目中用户名、密码明文传输的问题,使用了AES在前台加密,然后在后台解密,稍微整理了一下,记录AES前台加解密和后台java加解密,以防忘记。前台使用CryptoJS实现AES加解密的,所以要先下载组件,下载CryptoJS-v3.1.2版本之后,文件中包含components和rollups两个文件夹,components文件夹下是单个组件,rollups文件夹下是汇总,引用ro..._cryptojs.aes

Vue表单拖拽排序_vue多表单排列-程序员宅基地

文章浏览阅读774次,点赞3次,收藏4次。Vue table表单拖拽排序业务需求:因为数据展示使用的是 elementUI的 Table进行数据展示的,现在的需求是通过拖拽表单进行表单排序。同时,动态修改表单中的数据排列顺序。查阅了好多资料,也翻看了好多github上别人封装好的表单插件,但是最终都不是自己想要的,其中主要原因就是,后台管理系统页面中,同一个窗口可能涉及到多个表单拖拽排序,与此同时,使用部分插件就有可能导致数据更新不及时,或者下次在使用的时候,数据无论如何赋值就是更新不成功,导致最终渲染的要拖拽的表单一会有数据,一会无数据的,体_vue多表单排列

使用MNE工具包处理脑电数据(2)基础处理总览(EEG、MEG、ERP研究)_gradiometer eeg-程序员宅基地

文章浏览阅读1.7k次,点赞3次,收藏11次。@TOCepochs segementation获取事件码mne中利用find_events获得数据中已有的事件码,tip:事件码存储在channels中的’status’,因此前面提取通道的时候务必保留该通道。events = mne.find_events()分割事件mne中用Epoch函数进行事件分割,返回对象类似字典,调用方式也与字典相同如epoch[‘keyname’]。在Epoch函数中,需要定义事件码与事件名称,并赋值给Epoch第二个参数。events_id = {'name_gradiometer eeg

修改MAGENTO2.1默认邮件模板_"magneto inlinecss file=\"css/email-inline.css"-程序员宅基地

文章浏览阅读1.3k次。Customize email templatesEmail templates are stored in the &lt;module_dir&gt;/view/&lt;area&gt;/email directory of their respective modules. For example, the template for the new order transactional e..._"magneto inlinecss file=\"css/email-inline.css"

Windows下 命令提示符不能TAB补全_cmd中tab不能补全命令-程序员宅基地

文章浏览阅读3.6k次。第一个修改注册表,让命令提示符支持tab,(只能在当前目录下补全文件名和目录名,不能补全命令)windows键 + r 调出命令提示符窗口 注 : windows键就是图案是Microsoft Windows的视窗徽标的按键 输入 regedit 命令,进入注册表编辑器 3:进入HKEY_LOCAL_MACHINESOFTWAREMicrosoftCommand Processor,选择CompletionChar右键修改, 在弹出的窗口中, 修改值为9 ,选择(十进制),点击确定。4:重_cmd中tab不能补全命令

从零学习Swagger3.0-程序员宅基地

文章浏览阅读9.8k次,点赞12次,收藏42次。一、什么是Swagger?1、前言做为一个后端开发人员或者是前端开发人员,总归是要沟通调试项目的,前端要接口数据,不知道接口地址,我总不能一个一个的把接口地址发给他吧,前端可能要打人了,后端觉得编写及维护接口文档会耗费不少精力,所以双方经常抱怨,经常扯皮,有这时间摸摸鱼不好嘛,所以Swagger就来接手这个重任,将项目的接口进行管理。所以前端只需要这一份接口文档就可以拿到数据,进行数据的处理等。提高开发效率。2、Swagger介绍官方网址:Swagger官网3、使用Swagger的好处无依_swagger3.0