带你学C语言:带你学函数

news2024/11/25 13:01:58

目录

🌍函数的概念

★★☆☆☆库函数

★★★★☆自定义函数

★★★☆☆形参与实参

★★★☆☆return语句

★★★☆☆数组做函数参数

★★★☆☆嵌套调用和链式访问

★★★☆☆函数的声明和定义

✍结束语


🌍函数的概念

数学中我们其实就见过函数的概念,比如:一次函数 y=kx+b ,k和b都是常数,给⼀个任意的x,就 得到⼀个y值。
其实在C语言也引入函数(function)的概念,有些翻译为:子程序,子程序这种翻译更加准确⼀些。
C语言中的函数就是⼀个完成某项特定的任务的一小段代码。这段代码是有特殊的写法和调用方法的。
C语言的程序其实是由无数个小的函数组合而成的,也可以说:一个大的计算任务可以分解成若 个较小 的函数(对应较小的任务)完成。同时⼀个函数如果能完成某项特定任务的话,这个函数也是可以
复用的,提升了开发软件的效率。
在C语言中我们一般会见到两类函数:
库函数
自定义函数

根据上述的函数概念,我们可以知道其实函数就是就是将我们的一部分功能较为长的代码,封装成一个函数,这样有什么好处呢,一就是我们可以不用多次敲代码使用该功能,只需要调用函数即可。二是大大增强代码的可读性,让读者读着舒服。好了那我们就快快开始这一讲吧。 

★★☆☆☆库函数

2.1 标准库和头文件
C语言标准中规定了C语言的各种 语法规则,C语言并不提供库函数;C语言的国际标准ANSI C规定了一 些常用的函数的标准,被称为标准库,那不同的编译器⼚商根据ANSI提供的C语言标准就给出了⼀系列 函数的实现。这些函数就被称为库函数。
我们知道的 printf scanf 都是库函数,库函数的也是函数,不过这些函数已经是现 成的,我们只要学会就能直接使用了。有了库函数,⼀些常见的功能就不需要我们自己实现了,⼀
定程度提升了效率;同时库函数的质量和执行效率上都更有保证。 各种编译器的标准库中提供了一系列的库函数,这些库函数根据功能的划分,都在不同的头文件中进
行了声明。
库函数相关头文件https://zh.cppreference.com/w/c/header
有数学相关的,有字符串相关的,有⽇期相关的等,每⼀个头文件中都包含了,相关的函数和类型等
信息,库函数的学习不用着急⼀次性全部学会,慢慢学习,各个击破就行。
2.2 库函数的使用方法
库函数的学习和查看工具很多,比如:
C/C++官网的链接https://zh.cppreference.com/w/c/header
cplusplus.comhttps://legacy.cplusplus.com/reference/clibrary/

这边的东西小赵就不细讲了,因为我们之前就已经接触过很多的库函数的概念,只是之前不知道具体的概念而已,然后小赵在这里也是提供了一些小赵同学在平常学习中常用的一些网站,大家可以根据这些网站去学习就行。我们下面主要谈谈自定义函数。

★★★★☆自定义函数

自定义形式如下:
ret_type fun_name(形式参数)
{
}
ret_type 函数返回类型
fun_name 函数名
括号中放的是形式参数
{}括起来的是函数体(封装的代码,这段代码执行这个函数要执行的功能)

小赵在这里为大家举个例子帮助大家理解。

 

这里小赵举了一个有返回值的和无返回值的供大家参考,这里需要注意的是,我们有时候刚学函数的时候,对于无返回值的函数可能会忘记加(),但其实到后面我们会知道这个括号恰恰是函数的灵魂所在,它调用了函数,可以说是函数启动的开关。

★★★☆☆形参与实参

下面来给大家聊聊实参和形参,其实这个事情很简单,我给大家说个事大家就能明白了。相信大家都见过压月饼的模具,或者是一些其他的蛋糕之类的模具,如果实在没见过也可以去抖音搜搜。那么我们在函数中设置的输入就像是这个模具。就像我上面的那个代码的x,y.

它的作用其实就相当于一个模具。我们将实实在在的数字,或者被赋值过的变量灌入这个模具中,然后这个模具就会经过一系列处理,帮我们的实实在在的数字,或者被赋值过的变量给和在一起,然后返回出来。

这大概就是实参和形参的概念,我们这里的x,y就是形参,而我们的实实在在的数字,或者被赋值过的变量就是实参。相信大家听到这里就明白了,原来其实它就是个工厂,帮忙加工一下我们的数据啊。原来如此,哈哈。

★★★☆☆return语句

return语句在函数中扮演着极其重要的角色,它就是将我们模具压出来的结果返回值,它就是整个过程的结果。

在函数的设计中,函数中经常会出现return语句,这里讲⼀下return语句使用的注意事项。
return后边可以是⼀个数值,也可以是⼀个表达式,如果是表达式则先执行表达式,再返回表达式
的结果。
• return后边也可以什么都没有,直接写 return; 这种写法适合函数返回类型是void的情况。
return返回的值和函数返回类型不⼀致,系统会⾃动将返回的值隐式转换为函数的返回类型。
return语句执行后,函数就彻底返回,后边的代码不再执行。
如果函数中存在if等分支的语句,则要保证每种情况下都有return返回,否则会出现编译错误。

★★★☆☆数组做函数参数

这里先给大家提供数组函数的一些要求

函数的形式参数要和函数的实参个数匹配
函数的实参是数组,形参也是可以写成数组形式的
形参如果是一维数组,数组大小可以省略不写
形参如果是二维数组,行可以省略,但是列不能省略
数组传参,形参是不会创建新的数组的后面函数栈帧会聊)
形参操作的数组和实参的数组是同⼀个数组

我们都知道函数是一个集合,那么它又应该如何传入函数中呢,这里可以看小赵下面的操作。只演示一遍哦,好好看。

我们这里传入的就是整个数组。

★★★☆☆嵌套调用和链式访问

接着就是嵌套,嵌套是什么呢,其实就像是俄罗斯套娃一样,一个函数下面还有一个函数,一个接着一套。那如果自己套自己叫什么呢?那个就叫做函数的递归,这个后面回聊,这里就不多说了

它呢其实也简单,就是我们运行到那个函数的时候,我们填入的其实还是我们这个函数的x,y,因为这里是我们的地盘,然后在进入它的函数中,返回出值就好了。

★★★☆☆函数的声明和定义

大家都知道,代码不是飞的,不是跳的,它是一行一行脚踏实地地运行的,它的运行是一行接着一行。那我们在我们主函数执行我们自定义函数的时候吗,如果我们的自定义函数在主函数下面还没有被读入这个系统,你说这个代码能运行吗,我觉得运行不了,为了解决这个问题,我们在C语言中弄出了一个函数的声明,这个玩意就是告诉你我是存在的你别觉得我好像不存在一样,那么我们的系统因为知道这个信息就会一直向下运行找到函数的内容在运营。这个就像我们的身份证一样,函数拿着它就是告诉你,我是个函数,那么这个函数声明怎么弄呢?其实也简单就是我们原本定义函数的部分加个;就可以。

✍结束语

好了,今天小赵的分享就到这里了,如果大家觉得小赵的文章讲的还可以给小赵点个赞,当然如果对小赵这次讲的函数感觉难度不够,大家可以去看看小赵的专栏C语言小游戏中的扫雷,猜数字游戏,三子棋,里面都有使用各种函数,还有对static等作用的讲解,更有多个文件如何处理函数的讲解,欢迎大家阅览哦。

听说各位快要期末考试了,小赵准备给大家准备一起期末刷题专栏,帮助大家旗开得胜。

如果觉得文章对你有帮助的话,还请点赞,关注,收藏支持小赵,如有不足还请指点,小赵及时改正,感谢大家支持!!!

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处:http://www.coloradmin.cn/o/1287681.html

如若内容造成侵权/违法违规/事实不符,请联系多彩编程网进行投诉反馈,一经查实,立即删除!

相关文章

校园局域网规划设计

摘 要 随着网络技术的发展,校园网的建设已经进入到一个蓬勃发展的阶段。校园网的建成和使用,对于提高教学和科研的质量、改善教学和科研条件、加快学校的信息化进程,开展多媒体教学与研究以及使教学多出人才、科研多出成果有着十分重要而深远…

Oracle连接错误:ORA-28040:没有匹配的验证协议

一、产生原因:oci动态库版本太低,无法连接高版本的数据库 二、解决办法 1、下载高版本的oci库 https://www.oracle.com/database/technologies/instant-client/winx64-64- downloads.html 2、解压并复制oci动态库 3、粘贴到相应的目录

学校图书管理系统的开发

目 录 摘要 1 Abstract. 1 1 引言 2 1.1 图书管理的现状 2 1.2 现有图书管理系统的概述 3 1.3 选题的目的、意义 3 1.4 图书管理系统的可行性分析 4 1.5 系统开发运行环境 4 2 图书管理系统开发相关技术的介绍 5 2.1 Asp.net的介绍 5 2.1.1 Asp.net的优势介绍 5 2.1.2 Asp.net…

3D模型制作木质纹理贴图

在线工具推荐: 3D数字孪生场景编辑器 - GLTF/GLB材质纹理编辑器 - 3D模型在线转换 - Three.js AI自动纹理开发包 - YOLO 虚幻合成数据生成器 - 三维模型预览图生成器 - 3D模型语义搜索引擎 本文将讲解如何使用GLTF 编辑器 -NSDT 在线材质编辑工具为3D模型设置…

逆水行舟!浅谈24届双非本科秋招

逆水行舟!浅谈24届双非本科的秋招 逆水行舟!浅谈24届双非本科的秋招0、背景 -- 写下本文的初衷1、实习 -- 秋招的预备战役1.1 科大讯飞1.2 三七互娱 2、秋招 -- 一场没有硝烟的战争3、总结 -- 做好自己想做的事情 0、背景 – 写下本文的初衷 如题&#…

Siemens-NXUG二次开发-打开与关闭prt文件[Python UF][20231206]

Siemens-NXUG二次开发-打开与关闭prt文件[Python UF][20231206] 1.python uf函数1.1 NXOpen.UF.Part.Open1.2 NXOpen.UF.Part.LoadStatus1.3 NXOpen.UF.Part.Close1.4 NXOpen.UF.Part.AskUnits 2.示例代码3.运行结果3.1 内部模式3.2 外部模式 1.python uf函数 1.1 NXOpen.UF.P…

Linix服务器添加dns解析

Linix开通互联网域名地址出现,如下错误: 需要访问的服务器上添加dns解析 vim /etc/sysconfig/network-scripts/ifcfg-ens192 添加如下配置: DNS1202.96.134.13 重启网卡: systemctl restart network 注意如果是docker服务部署…

用pip更新、安装python的包

查看pip的版本:python -m pip --version 例如,查看下pip的版本,在cmd下输入命令python -m pip --version,可以发现当前安装的pip的版本是23.2.1: 查看一个包的详情:python -m pip show 例如&#xff0c…

【开源】基于Vue.js和微信小程序的班级考勤管理系统

文末获取源码,项目编号: S 080 。 \color{red}{文末获取源码,项目编号:S080。} 文末获取源码,项目编号:S080。 目录 一、摘要1.1 项目介绍1.2 项目录屏 二、功能模块2.1 系统基础支持模块2.2 班级学生教师支…

统计项目代码行数轻松搞定:使用 Node.js 脚本自动统计代码量

说在前面 在软件开发领域,了解项目的代码规模和复杂度对于项目管理、团队协作以及技术评估都至关重要。通过统计项目代码行数,我们能够更好地把握项目的整体情况,包括但不限于代码量的大小、不同类型文件的分布情况以及项目的结构和复杂度。这…

WordPiece词表的创建

文章目录 一、简单介绍二、步骤流程2.1 预处理2.2 计数2.3 分割2.4 添加subword 三、代码实现 本篇内容主要介绍如何根据提供的文本内容创建 WordPiece vocabulary,代码来自谷歌; 一、简单介绍 wordpiece的目的是:通过考虑单词内部构造&…

Anemone库的爬虫程序代码示例

以下是代码: ruby require anemone # 设置代理服务器 Anemone.proxies { http > "", https > "" } # 定义爬取的URL url # 使用Anemone进行爬取 Anemone.crawl(url) do |page| # 使用正则表达式找出所有的视频链接 video_…

AI 绘画 | Stable Diffusion LCM和FP8 显存不足的福音

前言 在我们使用Stable Diffusion 作画的时候,普通用户因为电脑显存配置过低,经常会出现爆显存和出图慢的困扰。而SD-WebUI在显存优化方便不如ComfyUI和Fooocus,但是也有一些弥补SD-WebUI显存问题的方案,那就是LCM和FP8。 LCM 教程 简介 LCM 是一个用于 Stable Diffusio…

算法-02-排序-冒泡插入选择排序

一般最经典的、最常用的:冒泡排序、插入排序、选择排序、归并排序、快速排序、计数排序、基数排序、桶排序。那么我们如何分析一个"排序算法"呢? 1-分析排序算法要点 时间复杂度:具体是指最好情况、最坏情况、平均情况下的时间复杂…

C++包管理利器CPM

C包管理利器CPM 一、介绍 CPM.cmake is a cross-platform CMake script that adds dependency management capabilities to CMake. It’s built as a thin wrapper around CMake’s FetchContent module that adds version control, caching, a simple API and more. CPM.cma…

JavaScript 安全的《加/解密处理》的实战--案例(二)

前言: 在Web开发中,安全性一直是一个重要而复杂的议题,尤其是与敏感数据操作有关时。数据传输地过程中需要保证信息绝对的安全性,包括了诸如用户名、密码、个人信息等,这就需要对这类信息进行加密与解密。本案例(二&a…

【LeetCode热题100】【双指针】接雨水

给定 n 个非负整数表示每个宽度为 1 的柱子的高度图,计算按此排列的柱子,下雨之后能接多少雨水。 示例 1: 输入:height [0,1,0,2,1,0,1,3,2,1,2,1] 输出:6 解释:上面是由数组 [0,1,0,2,1,0,1,3,2,1,2,1] …

一. 初识数据结构和算法

数据结构与算法是一个达到高级程序员的敲门砖。当你脱离了语言的应用层面,去思考他的设计层面时,你就依旧已经开始初识数据结构与算法了 数据结构 什么是数据结构 对于数据结构的定义官方并没有统一的解释,在各个百科以及算法的书中&#xf…

《课程教育研究》期刊投稿简介

《课程教育研究》杂志系内蒙古自治区文化和旅游厅主管,内蒙古自治区北方文化研究院主办,面向国内公开发行的教育类学术期刊。国际标准刊号:ISSN2095-3089,国内统一刊号CN15-1362/G4,月刊。 国家新闻出版总署批准的正规…

使用cross-env兼容windows和linux环境的nodejs变量

文章目录 前言一、windows使用二、linux环境三、区别相同点不同点 四、使用cross-env兼容项目安装cross-env使用 总结如有启发,可点赞收藏哟~ 前言 由于办公和家里的开发环境不同(windows和linux) 在处理nodejs项目的时候,脚本设…