函数——C语言的重要部分

C语言函数题-拆分实数的整数与小数部分 6-2 拆分实数的整数与小数部分 (15分) 本题要求实现一个拆分实数的整数与小数部分的简单函数。 函数接口定义: void splitfloat( float x, int *intpart, float *fracpart ); 其中x是被拆分的实数(0≤x<10000),intpart和fracpart分别是将实数x拆分出来的整数部分与小数部分。 裁判测试程序样例: #include <stdio.h> void splitfloat( float x, int *intpar 阅读详情

函数

大纲:

函数是什么

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

在计算机科学中,子程序,是一个大型程序中的某部分代码,由一个或多个语句块组成,它负责完成某项特定任务,而且相较于其他代码,具备相对的独立性。

一般会有输入参数并由返回值,提供对过程的封装和细节的隐藏,这些代码通常被集成为软件库。

库函数

为什么会有库函数:

        1.我们知道在我们学习C语言编程的时候,总是在一个代码编写完成之后迫不及待的想知道结果,想把这个结果打印到屏幕上看看,这个时候我们会频繁的使用一个功能:将信息按照一定的格式打印到屏幕上(printf)

        2.在编程的过程中我们会频繁的做一些字符串的拷贝工作(strcypy)。

        3.在编程时我们也计算,总是会计算n的k次方这样的运算(pow)。

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

具体怎么学习库函数呢?

cplusplus一个C++语言的的学习函数网站。

c++兼容c。

C语言官方网站:cpreference

cplusplus界面介绍

strcpyr函数为例

char是函数名,strcy是参数,后面括号里面的是返回类型

这里是指把源头指针指向的字符串转移到目标指地址。

copy string 是函数功能的介绍

parameter 是形式参数。

Return Value 是返回值的介绍

Output 是指这个函数最后输出的结果是什么

See also 则是指和这个函数相关的其他函数

现在,我们学习几个函数:

strcpy 字符串赋值函数

我们要把arr2传到arr1里面去

于是,arr2就是源头,arr1就是目标地址。

当出现某函数未定义的错误时大概率就是头文件没有包含

这样就是代码正常运行

strcpy可以把目标变量中的\0一同拷贝

接下来学习 memset 语言初始化函数

这段代码就是将arr数组中的前5个字符替换成 x

上面两个函数的头文件都是 #include<string.h>

学会使用库函数

练习: 写出函数找出两个整数中的最大值。

就是这段代码

写出一个函数可以交换两个整型变量的内容

这是代码及运行结果

但是却没有交换

因为 当函数调用的时候,实参(a,b)传给形参(x,y),形参是实参的一份临时拷贝。所以对形参的修改是不影响实参的

解决方法是 传送 a b 的地址

这叫传址调用,上面不能实现的叫做传值调用

函数的参数

这里的实参可以是常量,变量,及表达式和函数。

必须得有确切的值

函数的调用

传值调用与传址调用

写出一个函数可以交换两个整型变量的内容

这是代码及运行结果

但是却没有交换

因为 当函数调用的时候,实参(a,b)传给形参(x,y),形参是实参的一份临时拷贝。所以对形参的修改是不影响实参的

解决方法是 传送 a b 的地址

这叫传址调用,上面不能实现的叫做传值调用

练习:

(1)打印100~200之间的素数

这个是代码

这里的sqrt函数是计算数字的平方根,使用时需要加上头文件#include

(2)打印1000~2000之间的闰年

(3)写出一个函数,实现一个整型有序数组的二分查找

二分查找/折半查找

在一个有序数组中查找具体的某个数字n。

先将最左边的数字标记为left,最右边的标记为right,再将两者相加除2所得值mid相比较,如果较大,mid则变为left,right则为原来的right。较小则相反。

假设n = 7,首先left下标为0right下标为9,mid则为4,4

mid还可以这样写

所以这道题可以写成这样

结果是

但这里计算数组大小时计算的是错误的

这里其实传送的只是首元素的地址

这个地方的arr本质不是一个数组而是一个指针

这个是修改正确后的代码

其实形参写成数组也可以

(4)写一个函数,每调用一次这个函数,就会将num的值增加1

viod函数

void函数与其他函数的区别,viod函数不需要返回值,而其他函数需要

注意:

函数,如果不写返回值,函数默认会返回一个值,有些编译器上返回的是:最后一条指令产品的结果

函数的嵌套调用和链式访问

嵌套调用

main函数调用three_line,three_line调用new_line

链式访问

把一个函数的返回值作为另一个函数的参数

这里的字符串长度是6,strlen的返回值6就作为了printf函数的参数,所以结果就是6

看下面这个代码

我们可以通过查询cplusplus得,printf函数的返回值是打印在屏幕上字符的个数。

最里面的printf函数打印的是43,他的返回值就被中间的printf打印,结果是2,再然后中间的函数的返回值又被最外面的打印,结果是1。所以最终结果是43 2 1

函数的声明和定义

当我们的代码是这样时运行会报错说Add未定义

这是因为编译器扫描时是从上往下扫描,而扫到Add时发现没有见过Add,这时的解决办法是要么将Add写在前面,要么就是在前面声明一下Add函数(只要在Add函数使用之前就可以)

这就是函数声明

高级的函数调用

当我们需要多个人合力写项目时,就需要用到较为高级的函数调用

我们首先写一个主函数

我们再新建一个源文件写出我们即将调用的函数

我们再在主函数头部写出要调用的函数

然后再运行

一般我们在头文件中放函数的声明,类型的定义,头文件的包含

在源文件放函数的定义

这样写的好处是我们可以按模块写

还可以把函数的实现的代码隐藏起来

如何出售的代码

假如我我是张三通过业余时间写了一个游戏引擎,想卖它挣钱。

我们要实现的效果是:我可以给您用,但你不知道我是怎么写的

假设这是张三创建的游戏引擎

李四则对这个游戏引擎比较感兴趣,想买

但张三又不想让李四看见

张三则就要右击鼠标点击属性

在配置属性的常规选项下将配置类型改为静态库

点应用,确定

这时我们再按Ctrl+F5时会发现无法运行

但它也已经生成了一个add.lib文件

这个.lib文件就是张三游戏引擎所对应的静态库文件

被李四买走就可以用了,李四买完后放在他项目的debug文件夹里

但李四打开.lib文件发现都是些乱码,根本看不懂

上面其实是一些二进制信息,里面包含了很有价值的东西

张三随后再把头文件给李四

李四把.h文件加到工程里面后,发现还是无法编译

报错是无法解析的外部符号Add

这里要想使用就要加载一下静态库

以后我们要卖代码时只需要将运行的.lib文件和.h文件卖出即可

这就更加说明了以后写代码要规范一些

对于这里的头文件包含,编译器在处理的时候就会把头文件的内容直接拷贝到.c文件里

CyAPI函数简介.doc 本文档介绍了在usb开发中会用到的一些基本函数,新人可以用来参考学习 立即下载

相关推荐

WorkBuddy入门到 多Agent团队协作完全指南(附实操代码与配图)

WorkBuddy的Agent Teams功能支持多智能体协作,通过创建AI团队提升复杂任务处理效率。该功能支持自然语言创建团队、任务分配与依赖管理、成员间消息通信(包括直接消息和广播),并提供任务审批机制。典型应用场景包括软件开发、内容创作等协作任务。环境要求WorkBuddy 2026年3月及以上版本,支持Windows和macOS系统。用户可快速创建包含不同角色的AI团队,通过共享任务列表和信箱系统实现协作。高级功能包括委派模式、任务依赖管理和成员自主认领等,适合各类协作场景。

三棱球的专栏 6463

MATLAB中的一维插值与函数拟合

本文主要记录常用的一维插值与函数拟合的使用方法 文章目录前言一、一维插值二、函数拟合2.1 多项式拟合2.1.1多项式拟合指令2.1.2 图形窗口的多项式拟合2.2 指定函数拟合参考资料 前言 最近在学习数学建模,这部分关于怎么使用Matlab,刚好记录下来,做电赛的时候这些常用的插值、拟合工具也是需要学习的,刚开始学,写的不好,欢迎大家批评指正。 以下是本篇文章正文内容 一、一维插值 用MATLAB软件求解插值问题 在MATLAB中提供了一个一维插值函数interp1, 它的调用格式为 cy=in

qq_45977463的博客 6351

VS Code + ESP-IDF:离线环境配置与示例工程编译全指南

本文详细介绍了在VS Code中离线配置ESP-IDF开发环境的完整流程。针对国内开发者常遇到的网络问题,指南提供了从Python环境准备、获取离线安装包、运行安装器到VS Code插件配置与示例工程编译的全套解决方案,确保环境搭建稳定、可控且高效。

weixin_28842367的博客 403

c语言 使用函数实现字符串部分复制

本题要求编写函数,将输入字符串t中从第m个字符开始的全部字符复制到字符串s中。 函数接口定义: void strmcpy( char *t, int m, char *s ); 函数strmcpy将输入字符串char *t中从第m个字符开始的全部字符复制到字符串char *s中。若m超过输入字符串的长度,则结果字符串应为空串。 裁判测试程序样例: #include <stdio.h>...

inooll的博客 8000

Android Qcom USB Driver学习(十三)

该系列文章总目录链接与各部分简介: Android Qcom USB Driver学习(零) Android Qcom USB Driver学习(八) Android Qcom USB Driver学习(九)deals with the USB Power Delivery resources used by one or more ports on the basis of the local device policy the basis of the local device policy.opera

Android驱动开发 2614

Android存储空间不足下,APP出现奔溃等情况

版权声明:本文为博主原创文章,未经博主允许不得转载。 1. 问题起因     实时录制视频,使用getExternalCacheDir()函数返回的路径作为文件缓存区 2. 问题产生     系统在空间不足的情况下第一清除getExternalCacheDir和getCache文件下的缓存,导致正在录制的视频出现Error。 3. 解决方案     第一

OverseasAndroid的博客 4160

c语言程序的函数组成包括两个部分,c语言函数由哪两部分组成

在C语言中一个函数一般由两个部分组成一个是函数头,一个是函数体,函数体是编程语言中定义一个函数功能的所有代码组成的整体,函数头是指函数体之前的所有部分,应用于数学、程序设计领域,作用是给出了该函数的返回类型。在C语言中一个函数一般由两个部分组成一个是函数头,一个是函数体。函数体是编程语言中定义一个函数功能的所有代码组成的整体。函数体是用花括号括起来的若干语句,他们完成了一个函数的具体功能。函数体内...

weixin_35728532的博客 9374

FPGA工程师必看:JESD204B同步机制实战指南(含SYSREF信号调试技巧)

本文为FPGA工程师提供了一份JESD204B同步机制的实战指南,重点聚焦于SYSREF信号的调试技巧。文章从同步的核心逻辑出发,深入剖析了时钟、SYSREF与对齐序列这“三驾马车”的协作,并详细阐述了硬件PCB布局、FPGA IP核配置、状态机监控以及使用示波器进行波形分析等关键实战步骤,旨在帮助工程师解决多通道高速系统中的同步难题,确保链路的稳定与确定性延迟。

weixin_29239661的博客 332

c语言部分函数笔记

需要注意的点与strcat函数类似,是溢出问题,当目标数组(第一个数组)中放不下源头数组(第二个数组)时,会报错。有时候我们想对arr数组中的数据再次赋值到arr数组中,在vs2022的环境中,可以继续使用memcpy函数,在其他版本中不一定。当第一个数组中的对应字符值大于第二个数组中的对应字符值时,返回1,全部相等返回0,第一个数组中的对应字符值小于第二个数组中的对应字符值时,返回-1.这个函数一共需要三个参数,第一个参数是数据目的地地址,第二个参数是数据源头地址,第三个参数是传输的字节大小。

2301_79841550的博客 695

反激电源占空比为何必须小于0.5?次谐波振荡与斜坡补偿详解

在开关电源设计中,峰值电流模式控制因其优异的动态响应和逐周期限流保护而被广泛应用。其工作原理是通过采样电感电流的峰值,与误差电压比较来控制开关管的导通与关断。然而,这种控制方式在反激等隔离拓扑中,当占空比超过50%时,会面临一个固有的稳定性挑战——次谐波振荡。这是由于电流扰动会在相邻开关周期内被放大而非衰减,导致系统在开关频率一半处发生振荡,严重影响输出纹波和可靠性。为解决这一问题,工程上引入了斜坡补偿技术,通过向控制信号叠加一个固定斜率的斜坡,改变环路增益条件,从而在宽输入电压或高占空比需求下维持系统稳定

weixin_29631169的博客 627

泰山派rk3566 audio音频基础介绍

本文介绍了嵌入式系统中音频处理的基础知识,重点围绕RK3566平台的音频子系统展开。文章首先解释了音频信号从模拟到数字的转换过程,包括采样率、位深和声道等核心概念。随后详细分析了嵌入式音频开发中的关键接口:I2C用于控制音频编解码器,I2S作为专用音频数据传输总线,以及PCM作为原始音频格式和ALSA设备抽象的双重含义。通过对这些基础概念和接口的解析,为在RK3566平台上进行音频驱动开发和应用调试提供了理论基础。

qq_37077309的博客 295

C语言函数首部哪三部分,c语言函数由哪两部分组成

在C语言中一个函数一般由两个部分组成一个是函数头,一个是函数体,函数体是编程语言中定义一个函数功能的所有代码组成的整体,函数头是指函数体之前的所有部分,应用于数学、程序设计领域,作用是给出了该函数的返回类型。在C语言中一个函数一般由两个部分组成一个是函数头,一个是函数体。函数体是编程语言中定义一个函数功能的所有代码组成的整体。函数体是用花括号括起来的若干语句,他们完成了一个函数的具体功能。函数体内...

weixin_39685459的博客 4175

YOLOv11改进 ,YOLOv11改进主干网络为MobileNetV3,助力涨点

MobileNetV3通过结合硬件感知网络架构搜索(NAS)和NetAdapt算法,通过新颖的架构改进进一步提升了性能。本文开始探讨了自动化搜索算法与网络设计如何协同工作,以利用互补方法来提升整体技术水平。通过这一过程,创建了两个新的MobileNet模型:MobileNetV3-Large和MobileNetV3-Small,分别针对高资源和低资源使用场景。这些模型随后被适配并应用于目标检测和语义分割任务。

在职AI算法工程师,擅长计算机视觉,YOLO目标检测、分割等,擅长web、pyqt界面可视化,好内容持续更新中,来这里跟大家一起学习,共同进步 1937

【C语言】字符串函数及其部分模拟实现

字符串函数及其部分模拟实现

我爱我想但不嫉妒 我哭我笑但不抱怨 我羞我愧但不悲叹 我怒我恨但不自弃 941

STM32F407中文手册

STM32f407中文手册 本参考手册面向应用开发人员,提供有关使用 STM32F405xx/07xx、STM32F415xx/17xx、 STM32F42xxx 和 STM32F43xxx 微控制器存储器与外设的完整信息。STM32F405xx/07xx、STM32F415xx/17xx、STM32F42xxx 和 STM32F43xxx 构成一个微 控制器系列,各产品具有不同的存储器大小、封装和外设。有关订购信息以及器件的机械与电气特性,请参见数据手册。有关 ARM Cortex™-M4F 内核的信息,请参见《Cortex™-M4F 技术参考手册》。

廖雪峰Python教程[完整版]

廖雪峰的python教程整理的,已经排好版了,而且还是完整的,适合小白

c语言的函数由 组成,c语言函数由哪两部分组成

在C语言中一个函数一般由两个部分组成一个是函数头,一个是函数体,函数体是编程语言中定义一个函数功能的所有代码组成的整体,函数头是指函数体之前的所有部分,应用于数学、程序设计领域,作用是给出了该函数的返回类型。在C语言中一个函数一般由两个部分组成一个是函数头,一个是函数体。函数体是编程语言中定义一个函数功能的所有代码组成的整体。函数体是用花括号括起来的若干语句,他们完成了一个函数的具体功能。函数体内...

weixin_33781129的博客 6359

华为的C语言编程规范.pdf

华为技术有限公司内部技术规范。本规范制定了编写C语言程序的基本原则、规则和建议。从代码的清晰、简洁、可测试、安全、程序效率、可移植各个方面对C语言编程作出了具体指导。

c语言中的函数的组成,c语言函数由哪几部分组成

c语言函数由哪几部分组成发布时间:2020-07-16 15:46:42来源:亿速云阅读:476作者:Leah这篇文章将为大家详细讲解有关c语言函数由哪几部分组成,文章内容质量较高,因此小编分享给大家做个参考,希望大家阅读完这篇文章后对相关知识有一定的了解。在C语言中一个函数一般由两个部分组成一个是函数头,一个是函数体,函数体是编程语言中定义一个函数功能的所有代码组成的整体,函数头是指函数体之前的...

weixin_32154667的博客 1万+

老版QQ原生表情gif动态

这是老版的QQ表情,不过全是动态的的,Windows照片查看器是不会动的,可以右击用浏览器打开查看,再说一遍是老版的,只是分享给宁愿用老版也要动态的人。

C语言string.h函数详解及部分模拟实现

一键获取string.h函数解析

m0_73900674的博客 9592

c语言字符串函数 小数,C语言modf()函数:求双精度数的小数部分

函数名: modf头文件:函数原型: double modf(double value, double *iptr);功 能: 求双精度数的小数部分参 数: double value 为要操作的双精度数 ,double *iptr 为要传回整数部分的变量指针返回值: 返回value的小数部分程序例: 分别求出双精度number的小数部分和整数部分,并将结果输出#include#includ...

weixin_32337913的博客 846

c语言函数部分,C语言函数大全(部分)

该楼层疑似违规已被系统折叠隐藏此楼查看此楼2数学函数,所在函数库为math.h、stdlib.h、string.h、float.hint   abs(inti)         返回整型参数i的绝对值double cabs(structcomplexznum)   返回复数znum的绝对值double fabs(doublex)        返回双精度参数x的绝对值long  la...

weixin_36429702的博客 196

c语言函数部分

大家一定在数学中早就接触过函数,那c语言中的函数是什么样的呢,今天我想来讲讲。我觉得c语言里面的函数和数学里面的函数本质上是一样的,都是给参数然后输出参数。

lzk666_csdn的博客 987

C语言函数部分知识点总结

2501_91740090的博客 319

C语言部分字符串函数及部分内存函数

C语言字符串函数及内存函数

Wynnn_sw的博客 86

C语言函数部分

一、变量的作用域 1.概念:变量起作用的范围。 2.局部变量与全局变量: ①局部变量: 概念:在函数内部或某个控制块的内部定义的变量(理解“局部”) 作用域:函数内部 作用:增强了函数模块的独立性 ②全局变量: 概念:在函数外面定义的变量 作用域:从该变量定义的位置开始,直到源文件结束(理解“全局”) 作用:同一文件的所有函数都可以引用全局变量,增强了各函数间数据的联系 ...

weixin_30807677的博客 184

C语言time.h里部分函数

在 C 语言中,<time.h>头文件提供了与日期和时间相关的功能。通过这个头文件,可以获取当前时间、处理时间、进行时间计算等操作。

m0_74087691的博客 1105

C语言,函数部分

求和函数#include<stdio.h> void sum(int begin, int end) { int i; int sum = 0; for ( i=begin; i<=end; i++){ sum += i; } printf("%d到%d的和是%d\n", begin, end, sum); }int main() {

Forgotten Lands 363

【C语言】关于处理字符和字符串的库函数,以及部分函数的实现

关于处理字符和字符串的库函数,以及部分函数的实现

是阿建吖! 963
上一篇: 分支和循环语句
下一篇: 递归——最烧脑的一集
宴之敖者、
博客等级 码龄4年 131粉丝 45原创
评论
成就一亿技术人!
拼手气红包6.0元
还能输入1000个字符
 
 条评论被折叠 查看
添加红包

请填写红包祝福语或标题

个

红包个数最小为10个

元

红包金额最低5元

当前余额3.43元 前往充值 >
需支付:10.00元
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付元
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值