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的自…...

Linux应用开发之网络套接字编程(实例篇)
服务端与客户端单连接 服务端代码 #include <sys/socket.h> #include <sys/types.h> #include <netinet/in.h> #include <stdio.h> #include <stdlib.h> #include <string.h> #include <arpa/inet.h> #include <pthread.h> …...

华为云AI开发平台ModelArts
华为云ModelArts:重塑AI开发流程的“智能引擎”与“创新加速器”! 在人工智能浪潮席卷全球的2025年,企业拥抱AI的意愿空前高涨,但技术门槛高、流程复杂、资源投入巨大的现实,却让许多创新构想止步于实验室。数据科学家…...

AI-调查研究-01-正念冥想有用吗?对健康的影响及科学指南
点一下关注吧!!!非常感谢!!持续更新!!! 🚀 AI篇持续更新中!(长期更新) 目前2025年06月05日更新到: AI炼丹日志-28 - Aud…...
【网络】每天掌握一个Linux命令 - iftop
在Linux系统中,iftop是网络管理的得力助手,能实时监控网络流量、连接情况等,帮助排查网络异常。接下来从多方面详细介绍它。 目录 【网络】每天掌握一个Linux命令 - iftop工具概述安装方式核心功能基础用法进阶操作实战案例面试题场景生产场景…...
CVPR 2025 MIMO: 支持视觉指代和像素grounding 的医学视觉语言模型
CVPR 2025 | MIMO:支持视觉指代和像素对齐的医学视觉语言模型 论文信息 标题:MIMO: A medical vision language model with visual referring multimodal input and pixel grounding multimodal output作者:Yanyuan Chen, Dexuan Xu, Yu Hu…...

Spark 之 入门讲解详细版(1)
1、简介 1.1 Spark简介 Spark是加州大学伯克利分校AMP实验室(Algorithms, Machines, and People Lab)开发通用内存并行计算框架。Spark在2013年6月进入Apache成为孵化项目,8个月后成为Apache顶级项目,速度之快足见过人之处&…...

基于ASP.NET+ SQL Server实现(Web)医院信息管理系统
医院信息管理系统 1. 课程设计内容 在 visual studio 2017 平台上,开发一个“医院信息管理系统”Web 程序。 2. 课程设计目的 综合运用 c#.net 知识,在 vs 2017 平台上,进行 ASP.NET 应用程序和简易网站的开发;初步熟悉开发一…...
【解密LSTM、GRU如何解决传统RNN梯度消失问题】
解密LSTM与GRU:如何让RNN变得更聪明? 在深度学习的世界里,循环神经网络(RNN)以其卓越的序列数据处理能力广泛应用于自然语言处理、时间序列预测等领域。然而,传统RNN存在的一个严重问题——梯度消失&#…...
【论文笔记】若干矿井粉尘检测算法概述
总的来说,传统机器学习、传统机器学习与深度学习的结合、LSTM等算法所需要的数据集来源于矿井传感器测量的粉尘浓度,通过建立回归模型来预测未来矿井的粉尘浓度。传统机器学习算法性能易受数据中极端值的影响。YOLO等计算机视觉算法所需要的数据集来源于…...
Nginx server_name 配置说明
Nginx 是一个高性能的反向代理和负载均衡服务器,其核心配置之一是 server 块中的 server_name 指令。server_name 决定了 Nginx 如何根据客户端请求的 Host 头匹配对应的虚拟主机(Virtual Host)。 1. 简介 Nginx 使用 server_name 指令来确定…...