C语言函数之—函数的分类

article/2025/9/16 19:50:05

目录

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 函数组成

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

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

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


http://chatgpt.dhexx.cn/article/t9NiM7Ne.shtml

相关文章

torch.optim.Adam() 函数用法

Adam: A method for stochastic optimization Adam是通过梯度的一阶矩和二阶矩自适应的控制每个参数的学习率的大小。 adam的初始化 def __init__(self, params, lr=1e-3, betas=(0.9, 0.999), eps=1e-8,weight_decay=0, amsgrad=False): Args:params (iterable): iterable o…

pytorch ——torch.optim.Adam

class torch.optim.Adam(params, lr0.001, betas(0.9, 0.999), eps1e-08, weight_decay0)它在Adam: A Method for Stochastic Optimization中被提出。(https://arxiv.org/abs/1412.6980) 参数&#xff1a; params (iterable) – 待优化参数的iterable或者是定义了参数组的dict…

在ADS中使用OPTIM优化设计

在ADS中可以使用OPTIM控件来对电路变量进行优化设计&#xff0c;以实现电路性能目标。ADS常用的S参数仿真和谐波平衡仿真中都可以进行优化设计。 在S参数仿真中进行优化设计 现在以一个阻抗匹配网络的设计为例&#xff0c;来展示在S 参数仿真中进行优化设计的方法。 我们搭建…

torch.optim.SGD()

其中的SGD就是optim中的一个算法&#xff08;优化器&#xff09;&#xff1a;随机梯度下降算法 PyTorch 的优化器基本都继承于 "class Optimizer"&#xff0c;这是所有 optimizer 的 base class torch.optim是一个实现了各种优化算法的库。大部分常用的方法得到支持…

torch.optim.lr_scheduler:调整学习率

本文是笔者在学习cycleGAN的代码时&#xff0c;发现其实现了根据需求选择不同调整学习率方法的策略&#xff0c;遂查资料了解pytorch各种调整学习率的方法。主要参考&#xff1a;https://pytorch.org/docs/stable/optim.html#how-to-adjust-learning-rate 1 综述 1.1 lr_sche…

一起来学PyTorch——torch.nn优化器optim

在学习的过程中&#xff0c;大家可能会感觉很蒙&#xff0c;其实现在做的就是看懂每一个小内容&#xff0c;等之后做一个具体的项目&#xff0c;就可以串联起来了。 优化器用于优化模型&#xff0c;加速收敛。 SGD方法 随机梯度下降法&#xff0c;是指沿着梯度下降的方向求解极…

Pytorch之Optim(优化器)

使用优化器,接收损失函数的结果,并调整网络参数,完成反向传播 根据示例 optimizer torch.optim.SGD(module.parameters(), lr0.01, momentum0.9) 然后根据提示,清空梯度>网络前传>计算损失>反向传播>优化网络参数 在运行区域引入库和之前的Module if __name__ …

torch.optim

torch.optim是一个实现了各种优化算法的库。 1. 如何使用optimizer 我们需要构建一个optimizer对象。这个对象能够保持当前参数状态并基于计算得到的梯度进行参数更新。 1.1 构建 为了构建一个Optimizer&#xff0c;你需要给它一个包含了需要优化的参数&#xff08;必须都是…

torch.optim.lr_scheduler.CosineAnnealingWarmRestarts、OneCycleLR定义与使用

torch中有多种余弦退火学习率调整方法&#xff0c;包括&#xff1a;OneCycleLR、CosineAnnealingLR和CosineAnnealingWarmRestarts。 CosineAnnealingWarmRestarts&#xff08;带预热的余弦退火&#xff09;学习率方法定义 torch.optim.lr_scheduler.CosineAnnealingWarmRest…

torch.optim优化算法理解之optim.Adam()

torch.optim是一个实现了多种优化算法的包&#xff0c;大多数通用的方法都已支持&#xff0c;提供了丰富的接口调用&#xff0c;未来更多精炼的优化算法也将整合进来。 为了使用torch.optim&#xff0c;需先构造一个优化器对象Optimizer&#xff0c;用来保存当前的状态&#x…

Python-torch.optim优化算法理解之optim.Adam()

目录 简介 分析 使用 Adam算法 参数 论文理解 torch.optim.adam源码理解 Adam的特点 转载torch.optim优化算法理解之optim.Adam() 官方手册&#xff1a;torch.optim — PyTorch 1.11.0 documentation 其他参考 pytorch中优化器与学习率衰减方法总结 Adam和学习率衰减…

R 语言 optim 使用

stats中的optim函数是解决优化问题的一个简易的方法。 Univariate Optimization f function(x,a) (x-a)^2 xmin optimize(f,interval c(0,1),a1/3) xminGeneral Optimization optim函数包含了几种不同的算法。 算法的选择依赖于求解导数的难易程度&#xff0c;通常最好提…

PyTorch基础(六)-- optim模块

PyTorch的optim是用于参数优化的库&#xff08;可以说是花式梯度下降&#xff09;&#xff0c;optim文件夹主要包括1个核心的父类&#xff08;optimizer&#xff09;、1个辅助类&#xff08;lr_scheduler&#xff09;以及10个常用优化算法的实现类。optim中内置的常用算法包括a…

pytorch基础(四):使用optim优化函数

文章目录 前言一、问题描述二、官方文档代码三、optimizer的工作原理总结 前言 本系列主要是对pytorch基础知识学习的一个记录&#xff0c;尽量保持博客的更新进度和自己的学习进度。本人也处于学习阶段&#xff0c;博客中涉及到的知识可能存在某些问题&#xff0c;希望大家批评…

HTTP协议之GET与POST区别

GET和POST是HTTP请求的两种基本方式&#xff0c;对于这两种请求方式的区别&#xff0c;只要是接触过Web开发的就能说出一二&#xff1a;GET把参数包含在URL中&#xff0c;POST通过正文传参&#xff01; 而我想深入了解以下的时候&#xff0c;就去了w3cschool&#xff0c;这是w…

Get和Post区别是什么

附上原文地址&#xff1a;https://www.cnblogs.com/logsharing/p/8448446.html GET和POST是HTTP请求的两种基本方法&#xff0c;要说它们的区别&#xff0c;接触过WEB开发的人都能说出一二。 最直观的区别就是GET把参数包含在URL中&#xff0c;POST通过request body传递参数。…

get与post区别(很全~)

get与post区别 GET&#xff1a; &#xff08;1&#xff09;从指定的资源请求数据 &#xff08;2&#xff09;请求数据有长度限制&#xff08;不同每个浏览器限制长度可能不一样&#xff09; &#xff08;3&#xff09;请求url会在浏览器地址栏中显示 &#xff08;4&#x…

Web中get和post区别

99% 的人都理解错了 HTTP 中 GET 与 POST 的区别&#xff08;转&#xff09; 转自&#xff1a;WebTechGarden 微信公众号GET 和 POST 是 HTTP 请求的两种基本方法&#xff0c;要说它们的区别&#xff0c;接触过 WEB 开发的人都能说出一二。最直观的区别就是 GET 把参数包含在 U…

get,post区别

Http定义了与服务器交互的不同方法&#xff0c;最基本的方法有4种&#xff0c;分别是GET&#xff0c;POST&#xff0c;PUT&#xff0c;DELETE。URL全称是资源描述符&#xff0c;我们可以这样认为&#xff1a;一个URL地址&#xff0c;它用于描述一个网络上的资源&#xff0c;而H…

GET 与 POST 区别

GET和POST是HTTP请求的两种基本方法&#xff0c;要说它们的区别&#xff0c;接触过WEB开发的人都能说出一二。 最直观的区别就是GET把参数包含在URL中&#xff0c;POST通过request body传递参数。 你可能自己写过无数个GET和POST请求&#xff0c;或者已经看过很多权威网站总结出…