C语言与人生函数的对比,使用,参数详解
各位少年,大家好,我是博主那一脸阳光
。,今天给大家分享函数的定义,和数学的函数的区别和使用
前言:C语言中的函数和数学中的函数在概念上有相似之处,但也存在显著的区别。下面对比它们的主要特点:
相同点:
映射关系:两者都定义了一种输入与输出之间的关系。在数学中,函数f(x)将一个或多个变量映射到一个确定的值;而在C语言中,函数接收参数并根据这些参数执行一系列操作,最终可能返回一个结果。
抽象化:无论是数学还是编程中,函数都是一种抽象化的工具,用于简化复杂问题,通过模块化的方式处理特定任务。
命名约定:在数学和C语言中,我们都会给函数起一个名字来标识其功能。 不同点:执行方式:数学函数是静态的概念,它仅仅描述了一个计算过程,不涉及具体的执行环境。而C语言中的函数是程序的一部分,会在计算机上实际运行,完成特定的任务(如计算、数据处理等)。
实现方式:数学函数可以通过解析公式直接得到结果,而C语言函数需要程序员编写具体代码来实现计算逻辑,并且通常涉及到内存分配、控制流程以及其他系统资源的管理。
输入和输出: 数学函数的输入可以是连续的实数或者复数,输出也是数值。
C语言函数的输入(参数)必须是具体的离散数据(比如整数、浮点数或指针),并且调用时传递的是变量的实际值。
数学函数理论上可以有无限多的输入值对应一个输出值,而C语言函数在有限的时间内只能处理有限个离散的输入值。
副作用:数学函数通常被认为是纯函数,即相同的输入总是产生相同的输出,并且没有“副作用”。相比之下,C语言函数不仅可以进行计算,还可以改变全局变量、修改传入的指针所指向的内容或进行IO操作等,具有明显的副作用。
约束条件:数学函数的定义域和值域可以是无限的,并且可以根据数学规则自由设定。而C语言函数在实现时由于计算机硬件限制,定义域和值域实际上是有限的,并受到编译器和机器类型限制的影响。
总之,尽管C语言中的函数和数学中的函数都代表了某种输入-输出关系,但它们的本质和用途有着本质的不同。C语言函数更多地关注于如何在现实世界中执行计算和操作,而数学函数则更侧重于理论上的数学模型和分析。
函数的概念
数学中我们其实就见过函数的概念,比如:一次函数y=kx+b,k和b都是常数,给一个任意的X就能得到任意一个y值,其实在C语言也引入(函数)的概率,有些翻译为:子程序,子程序这种翻译更加准确一些。C语言中的函数就是一个完成某项特定的任务的一小段代码。这段代码是有特殊的写法和调用方法的。
言的程序其实是由无数个小的函数组合而成的,也可以说一个大的计算任务可以分解成若干个较小的函数(对应较小的任务)完成。同时一个函数如果能完成某项特定任务的话,这个函数也是可以复用的,提升了开发软件的效率。
在C语言中我们一般会见到两类函数(库函数)和(自定义函数)。
# 库函数介绍和标准库和头文件再介绍一些库函数之前,我先来分享一下C语言的函数是什么?用简洁方式给你概括一下
比如说我管你借一跟笔,完成这个行为就要叫做动作。那么函数就是完成指定的事情。
库函数,是直接可以使用的函数,但是要声明头文件。
C语言规定了语法规则
C语言本身不提供库函数。
但是C语言规定了,一些库函数的各种信息
scanf-,名字,参数,返回类型,函数的功能...,
C语言规定好了这些库函数,让C语言编译器厂商规定来实现这些函数
微软 ,MSVC 微软团队来实现
苹果 clang 苹果团队实现对应的库函数
函数实现细节可能有差异,但是程序员使用的时候,基本无感。库函数的学习和查看⼯具很多,⽐如:
C/C++官⽅的链接:https://zh.cppreference.com/w/c/header
cplusplus.com:https://legacy.cplusplus.com/reference/clibrary/
# 函数返回类型,函数参数```c
double sqrt (double x);
```sqrt是函数名x是函数的参数,表示调用sqrt函数需要传递一个double类型的值double 是返回值的类型-表示函数计算结果是double类型的值。
功能
Compute square root计算平方根
Returns the square root of x(返回平方根)
# 头文件的包含> 库函数是再标准库中对应的头文件中声明,所以库函数的使用,务必包含对应的头文件,不包含是可能会出现一些问题的。
>
#include<math.h>
int main()
{double ret = sqrt(16);printf("%lf", ret);return 0;
}
sqrt是一个库函数开平方的函数。
# 自定义函数
了解了库函数,我们关注度应该聚集在自定义函数上,自定义函数其实更加重要
# 函数的语法形式
其实自定义函数和库函数都是一样的,形式如下:```c
ret_type fun_name(形式参数)
{}`
ret_type是函数返回类型 fun_name是函数名 括号中放的是形式参数 {}括起来的是函数体。
形式参数描述的是函数完成任务的过程(到这里大家可能不懂了)接着往下去看。
两条关于自定义函数的法则
1函数名是自定义的,根据实际情况起名字
2参数的个数也是根据实际情况来确定,可以有0个参数,也可以多个参数。
3函数的返回值
函数可以返回值,也可以不返回,要根据实际的情况来写函数不返回值的时候,返回类型写void。
形参和实参
在函数的使用过程中,把函数的参数分为,实参和形参。
再看看我们前面写的代码
#include<stdio.h>
int Add(int x,int y)
{
int z=0;
z=x+y;
return z;
}
int main(0
{
int a=0;
int b=0;
scanf("%d %d",&a,&b);
int r=Add(a,b);
printf("%d\n",r);
return 0;
}
这里的Add是实际参数简称为实参,上面的Add是形式参数简称为形参。
实参的定义:函数调用时传递给函数的参数是实参。
形参
在上面add函数后面的x和y称为形式参数,简称形参,为什么叫形式参数呢?实际上,如果只是定义了 Add 函数,
⽽不去调⽤的话, Add 函数的参数 x和 y 只是形式上存在的,不会向内存申请空间,不会真实存在的,所以叫形式参数。形式参数只有在
函数被调⽤的过程中为了存放实参传递过来的值,才向内存申请空间,这个过程就是形式的实例化。
重点,当实参传递给形参的时候,形参是实参的一份临时拷贝。
总结:函数是C语言中重要概念,是计算机科学中不可或缺的部分,实参和形参可以让我C语言参数便的更加方面简介,使得功能强大。库函数是一些计算机先辈们设计好的,让广大的C/C++程序员方面便捷的使用它。
相关文章:
C语言与人生函数的对比,使用,参数详解
各位少年,大家好,我是博主那一脸阳光。,今天给大家分享函数的定义,和数学的函数的区别和使用 前言:C语言中的函数和数学中的函数在概念上有相似之处,但也存在显著的区别。下面对比它们的主要特点ÿ…...

机器人动力学一些笔记
动力学方程中,Q和q的关系(Q是sita) Q其实是一个向量,q(Q1,Q2,Q3,Q4,Q5,Q6)(假如6个关节) https://zhuanlan.zhihu.com/p/25789930 举个浅显易懂的例子,你在房…...

Plantuml之甘特图语法介绍(二十八)
简介: CSDN博客专家,专注Android/Linux系统,分享多mic语音方案、音视频、编解码等技术,与大家一起成长! 优质专栏:Audio工程师进阶系列【原创干货持续更新中……】🚀 优质专栏:多媒…...

Docker support for NVIDIA GPU Accelerated Computing on WSL 2
Docker support for NVIDIA GPU Accelerated Computing on WSL 2 0. 背景1. 安装 Docker Desktop2. 配置 Docker Desktop3. WLS Ubuntu 配置4. 安装 Docker-ce5. 安装 NVIDIA Container Toolkit6. 配置 Docker7. 运行一个 Sample Workload 0. 背景 今天尝试一下 NVIDIA GPU 在…...

SQL窗口函数大小详解
窗口大小 OVER 子句中的 frame_clause 选项用于指定一个滑动的窗口。窗口总是位于分区范围之内,是分区的一个子集。指定了窗口之后,分析函数不再基于分区进行计算,而是基于窗口内的数据进行计算。 指定窗口大小的语法如下: ROWS…...

C#上位机与欧姆龙PLC的通信06---- HostLink协议(FINS版)
1、介绍 对于上位机开发来说,欧姆龙PLC支持的主要的协议有Hostlink协议,FinsTcp/Udp协议,EtherNetIP协议,本项目使用Hostlink协议。 Hostlink协议是欧姆龙PLC与上位机链接的公开协议。上位机通过发送Hostlink命令,可…...

认识SpringBoot项目中的Starter
✅作者简介:大家好,我是Leo,热爱Java后端开发者,一个想要与大家共同进步的男人😉😉 🍎个人主页:Leo的博客 💞当前专栏: 循序渐进学SpringBoot ✨特色专栏&…...

ChatGPT 4.0真的值得花钱买入吗?
性能提升: ChatGPT 4.0的推出不仅意味着更先进的技术,还代表着更强大的性能。相较于3.5,4.0在处理任务时更为高效,响应更迅速。 更智能的理解: 随着版本的升级,ChatGPT 4.0对语境的理解能力得到了进一步的…...
vue3对比vue2是怎样的
一、前言 Vue 3通过引入Composition API、升级响应式系统、优化性能等一系列的改进和升级,提供了更好的开发体验和更好的性能,使得开发者能够更方便地开发出高质量的Web应用。它在Vue.js 2的基础上进行了一系列的改进和升级,以提供更好的性能、更好的开发体验和更好的扩展性…...

openGauss学习笔记-184 openGauss 数据库运维-升级-升级验证
文章目录 openGauss学习笔记-184 openGauss 数据库运维-升级-升级验证184.1 验证项目的检查表184.2 升级版本查询184.2.1 验证步骤 184.3 检查升级数据库状态184.3.1 验证步骤 openGauss学习笔记-184 openGauss 数据库运维-升级-升级验证 本章介绍升级完成后的验证操作。给出验…...
[Verilog语言入门教程] Verilog 减法器 (半减器, 全减器, 加减共用)
依公知及经验整理,原创保护,禁止转载。 专栏 《元带你学Verilog》 <<<< 返回总目录 <<<< “逻辑设计是一门艺术,它需要创造力和想象力。” - 马克张伯伦(Mark Zwolinski) 减法器是数字电路中常见的组件,用于减去两个二进制数的和。 在Verilog中…...
预编译仓库中的 Helm Chart
背景 内网部署项目, 没法直接hlem install , 需要提前看看有哪些镜像, 拉到本地看看 要使用预编译仓库中的 Helm Chart,你可以使用 helm fetch 命令来将 Chart 下载到本地,并使用 helm template 命令来预编译该 Chart。 首先,你可以使用以…...
Python requests get和post方法发送HTTP请求
requests.get() requests.get() 方法用于发送 HTTP GET 请求。下面介绍 requests.get() 方法的常用参数: url: 发送请求的 URL 地址。params: URL 中的查询参数,可以是字典或字符串。headers: 请求头信息。可以是字典类型,也可以是自定义的…...

在Cadence中单独添加或删除器件与修改网络的方法
首先需要在设置中使能 ,添加或修改逻辑选项。 添加或删除器件,点击logic-part,选择需要添加或删除的器件,这里的器件必须是PCB中已经有的器件,Refdes中输入添加或删除的器件标号,点击Add添加。 添加完成后就会显示在R1…...

轻松调整视频时长,创意与技术的新篇章
传统的视频剪辑工具往往难以精确控制时间,而【媒体梦工厂】凭借其先进的算法和界面设计,让视频时长的调整变得简单而精确,助你释放无限的创意,用技术为你的创意插上翅膀,让每一秒都有意义。 所需工具: 一…...

树与二叉树笔记整理
摘自小红书 ## 树与二叉树 ## 排序总结...

如何自动生成 API 接口文档 - 一份详细指南
本篇文章详细教你如何使用 Apifox 的 IDEA 插件实现自动生成接口代码。好处简单总结有以下几点: 自动生成接口文档: 不用手写,一键点击就可以自动生成文档,当有更新时,点击一下就可以自动同步接口文档;代码…...

【CF比赛记录】—— Good Bye 2023(A、B、C)
🌏博客主页:PH_modest的博客主页 🚩当前专栏:CF比赛记录 💌其他专栏: 🔴每日一题 🟡 cf闯关练习 🟢 C语言跬步积累 🌈座右铭:广积粮,缓…...

MySQL:索引
MySQL官方对索引的定义为: 索引 (Index) 是帮助MySQL高效获取数据的数据结构。 提取句子主干,就可以得到索引的本质:索引是数据结构。 1. 什么是索引,索引的作用 索引是一种用于快速查询和检索数据的数据结构,帮助mysql提高查询效率的数据…...

CUMT--Java复习--核心类
目录 一、装箱与拆箱 二、“”与equals 三、字符串类 1、String、StringBuffer、StringBuilder的区别 2、String类 3、StringBuffer类 4、StringBuilder类 四、类与类之间关系 一、装箱与拆箱 基本类型与对应封装类之间能够自动进行转换,本质就是Java的自…...

从深圳崛起的“机器之眼”:赴港乐动机器人的万亿赛道赶考路
进入2025年以来,尽管围绕人形机器人、具身智能等机器人赛道的质疑声不断,但全球市场热度依然高涨,入局者持续增加。 以国内市场为例,天眼查专业版数据显示,截至5月底,我国现存在业、存续状态的机器人相关企…...

el-switch文字内置
el-switch文字内置 效果 vue <div style"color:#ffffff;font-size:14px;float:left;margin-bottom:5px;margin-right:5px;">自动加载</div> <el-switch v-model"value" active-color"#3E99FB" inactive-color"#DCDFE6"…...

【SQL学习笔记1】增删改查+多表连接全解析(内附SQL免费在线练习工具)
可以使用Sqliteviz这个网站免费编写sql语句,它能够让用户直接在浏览器内练习SQL的语法,不需要安装任何软件。 链接如下: sqliteviz 注意: 在转写SQL语法时,关键字之间有一个特定的顺序,这个顺序会影响到…...
TRS收益互换:跨境资本流动的金融创新工具与系统化解决方案
一、TRS收益互换的本质与业务逻辑 (一)概念解析 TRS(Total Return Swap)收益互换是一种金融衍生工具,指交易双方约定在未来一定期限内,基于特定资产或指数的表现进行现金流交换的协议。其核心特征包括&am…...

IT供电系统绝缘监测及故障定位解决方案
随着新能源的快速发展,光伏电站、储能系统及充电设备已广泛应用于现代能源网络。在光伏领域,IT供电系统凭借其持续供电性好、安全性高等优势成为光伏首选,但在长期运行中,例如老化、潮湿、隐裂、机械损伤等问题会影响光伏板绝缘层…...

如何在最短时间内提升打ctf(web)的水平?
刚刚刷完2遍 bugku 的 web 题,前来答题。 每个人对刷题理解是不同,有的人是看了writeup就等于刷了,有的人是收藏了writeup就等于刷了,有的人是跟着writeup做了一遍就等于刷了,还有的人是独立思考做了一遍就等于刷了。…...
大语言模型(LLM)中的KV缓存压缩与动态稀疏注意力机制设计
随着大语言模型(LLM)参数规模的增长,推理阶段的内存占用和计算复杂度成为核心挑战。传统注意力机制的计算复杂度随序列长度呈二次方增长,而KV缓存的内存消耗可能高达数十GB(例如Llama2-7B处理100K token时需50GB内存&a…...
在web-view 加载的本地及远程HTML中调用uniapp的API及网页和vue页面是如何通讯的?
uni-app 中 Web-view 与 Vue 页面的通讯机制详解 一、Web-view 简介 Web-view 是 uni-app 提供的一个重要组件,用于在原生应用中加载 HTML 页面: 支持加载本地 HTML 文件支持加载远程 HTML 页面实现 Web 与原生的双向通讯可用于嵌入第三方网页或 H5 应…...
【Java学习笔记】BigInteger 和 BigDecimal 类
BigInteger 和 BigDecimal 类 二者共有的常见方法 方法功能add加subtract减multiply乘divide除 注意点:传参类型必须是类对象 一、BigInteger 1. 作用:适合保存比较大的整型数 2. 使用说明 创建BigInteger对象 传入字符串 3. 代码示例 import j…...

安宝特方案丨船舶智造的“AR+AI+作业标准化管理解决方案”(装配)
船舶制造装配管理现状:装配工作依赖人工经验,装配工人凭借长期实践积累的操作技巧完成零部件组装。企业通常制定了装配作业指导书,但在实际执行中,工人对指导书的理解和遵循程度参差不齐。 船舶装配过程中的挑战与需求 挑战 (1…...