函数(上)(C语言)
函数(上)
- 一. 函数的概念
- 二. 函数的使用
- 1. 库函数和自定义函数
- (1) 库函数
- (2) 自定义函数的形式
- 2. 形参和实参
- 3. return语句
- 4. 数组做函数参数
一. 函数的概念
数学中我们其实就见过函数的概念,比如:一次函数y=kx+b,k和b都是常数,给⼀个任意的x,得到⼀个y值。
其实在C语言也引入函数(function)的概念,有些翻译为:子程序,子程序这种翻译更加准确⼀些。C语言中的函数就是⼀个完成某项特定的任务的⼀小段代码。这段代码是有特殊的写法和调用方法的。也就是说C语言的程序其实是由无数个小的函数组合而成的,也可以说:⼀个大的计算任务可以分解成若干个较小的函数(对应较小的任务)完成。
二. 函数的使用
1. 库函数和自定义函数
C语言中的函数也分为两种,一种是库函数,我们称它为C语言中已经实现的函数,比如像printf、scanf等函数,已经不需要程序员自己编写而是直接使用的函数。另一种是自定义函数,也就是需要程序员自己创造,自定义函数其实更加重要,也能给程序员写代码更多的创造性。
(1) 库函数
在这里要说明一下,我们使用库函数并不是简单的直接使用,每一个库函数都有它自己相应的头文件,我们只有调用出了这个头文件才能使用对应的库函数,比如我们使用printf函数,我们要在开头加上#include <stdio.h>;再者我们如果使用strlen函数,我们也要加上#include <string.h>,所以后面我们也要了解函数所对应的头文件。
(2) 自定义函数的形式
首先来讲函数的语法形式,下面给大家一张图了解清楚:
也就说自定义函数也是有一个规范使用的格式,我们是照着这样的格式一步步去写属于我们自己的代码,比如说现在我要实现一个加法的代码,我应该怎么去写这个函数,下面给大家举一个简单的例子说明:下面展示一些 内联代码片
。
int Add(int x,int y)
{int z=0;z=x+y;return z;
}
上面的代码就是一个很简单的加法运算,int就代表我们的函数返回的类型是整形,而Add就是我们的函数名,如果后期要使用,我们就直接可以调用这个函数的名字进行使用,(int x,int y)就代表了我们要传入的形式参数,后面也会再详细教大家如何使用。
2. 形参和实参
在函数使用的过程中,把函数的参数分为,实参和形参。也就是我们在使用函数的时候,函数体本身和需要调用函数的那部分是分开的,我们也可以通过一个简单的例子向大家说明,我们还使用一个简单的加法的运算:下面展示一些 内联代码片
。
1 int Add(int x, int y)
2 {
3 int z = 0;
4 z = x + y;
5 return z;
6 }7 int main()
8 {
9 int a = 0;
10 int b = 0;
11 scanf("%d %d", &a, &b);
12 int r = Add(a, b);
13 printf("%d\n", r);
14 return 0;
15 }
上面就是一个简单的使用自定义函数的代码展示我们可以看到1~6行是我们Add函数的代码,而我们在第12行真正调用了这个函数,我们把函数的返回值赋给r,而也就是在这个里面我们向Add函数里面传入的a和b叫做实参,实际参数就是真实传递给函数的参数。在上面代码中,第1行定义函数的时候,在函数名Add后面的x和y叫做形式参数,也叫做形参。为什么叫形式参数呢?实际上,如果只是定义了Add 后的括号中写的x和y,而不去调用这个函数的话,那么x和y就只是形式上的存在,不会向内存申请空间,不会真实存在,形式参数只有在函数被调用的过程中为了存放实参传递过来的值,才向内存申请空间,这个过程就是形参的实例化。
3. return语句
其实在前面的例子中大家也可以看到在函数的设计中,函数中经常会出现return语句,这⾥讲⼀下return语句使用的注意事项。
• return后边可以是⼀个数值,也可以是⼀个表达式,如果是表达式则先执行表达式,再返回表达式的结果。
• return后边也可以什么都没有,直接写return,这种写法适合函数返回类型是void的情况。
• return返回的值和函数返回类型不一致,系统会自动将返回的值隐式转换为函数的返回类型。
• return语句执行后,函数就彻底返回,后边的代码不再执行。
• 如果函数中存在if等分支的语句,则要保证每种情况下都有return返回,否则会出现编译错误。
4. 数组做函数参数
在使用函数解决问题的时候,难免会将数组作为参数传递给函数,在函数内部对数组进行操作。比如:写⼀个函数将⼀个整型数组的内容,全部置为-1,再写⼀个函数打印数组的内容。简单思考⼀下,基本的形式应该是这样的:下面展示一些 内联代码片
。
void set_arr(int arr[], int sz)
{int i = 0;for (i = 0;i < sz; i++){arr[i] = -1;}
}void printf_arr(int arr[], int sz)
{int i = 0;for (i = 0; i < sz; i++){printf("%d ", arr[i]);}printf("\n");
}int main()
{int arr[10] = { 1,2,3,4,5,6,7,8,9,10 };int sz = sizeof(arr) / sizeof(arr[0]);set_arr(arr, sz); //将数组全部置换为-1printf_arr(arr, sz); //打印数组内容return 0;
}
从代码我们可以看出来,上面的set_arr函数要能够对数组内容进行设置,就得把数组作为参数传递给函数,同时函数内部在设置数组每个元素的时候,也得遍历数组,需要知道数组的元素个数。所以我们需要给set_arr传递2个参数,⼀个是数组,另外⼀个是数组的元素个数。仔细分析print_arr也是⼀样的,只有拿到了数组和元素个数,才能遍历打印数组的每个元素。
另外我们要注意的是在调用函数的时候,我们可以只传入数组名和元素个数,但是在写函数的时候我们在前面仍然要加上类型,这里我们需要知道数组传参的几个重点知识:
• 函数的形式参数要和函数的实参个数匹配
• 函数的实参是数组,形参也是可以写成数组形式的
• 形参如果是⼀维数组,数组大小可以省略不写
• 形参如果是⼆维数组,行可以省略,但是列不能省略
• 数组传参,形参是不会创建新的数组的
• 形参操作的数组和实参的数组是同⼀个数组
以上就是关于函数的部分知识,希望可以帮到大家,我也会及时更新关于函数的另一部分内容。
相关文章:
函数(上)(C语言)
函数(上) 一. 函数的概念二. 函数的使用1. 库函数和自定义函数(1) 库函数(2) 自定义函数的形式 2. 形参和实参3. return语句4. 数组做函数参数 一. 函数的概念 数学中我们其实就见过函数的概念,比如:一次函数ykxb,k和b都是常数&a…...
ARM-V9 RME(Realm Management Extension)系统架构之系统安全能力的侧信道抵御
安全之安全(security)博客目录导读 目录 一、系统PMU计数器 二、使用信号和功耗操作进行的故障攻击 一、系统PMU计数器 性能监测单元 (PMU) 计数器可能成为泄露机密信息的侧信道,如访问模式或受RME安全保障保护的安全状态下的执行控制流。以下规则补充了《Arm CoreSight™…...
Java高级技术探索:深入理解JVM内存分区与GC机制
文章目录 引言JVM内存分区概览垃圾回收机制(GC)GC算法基础常见垃圾回收器ParNew /Serial old 收集器运行示意图 优化实践结语 引言 Java作为一门广泛应用于企业级开发的编程语言,其背后的Java虚拟机(JVM)扮演着至关重…...
新视野大学英语2 词组 6.15
do you feel as confused and manipulated as i do with this question 你是否和我一样,对这个问题感到困惑和被操控 manipulated:被操控 defy common sense and contradict each other 违背常识且相互矛盾 defy:违背 contradict…...
【JavaScript】MDN
一、初识 1.1 基础 1.1.1 语言速成课 1.1.1.1 变量 变量是存储值的容器。首先用let关键字声明一个变量,后面跟着你给变量的名字 变量命名区分大小写 分号在JavaScript中是用来分隔语句的,但是如果语句后面有一个换行符(或者在{block}中只…...
Qt/C++中的异步编程
Qt/C++中的异步编程 1 介绍2 含义2.1 QtConcurrent2.2 std::future2.3 Qml中的Promise3 使用场景4 代码示例5 注意事项5.1异常处理5.2 线程安全5.3 性能优化5.4 线程间通信5.5 避免死锁1 介绍 异步编程是现代应用程序开发中不可或缺的一部分。它允许程序在执行耗时任务时保持响…...
解决javadoc一直找不到路径的问题
解决javadoc一直找不到路径的问题 出现以上问题就是我们在下载jdk的时候一些运行程序安装在C:\Program Files\Common Files\Oracle\Java\javapath下: 一开始是没有javadoc.exe文件的,我们只需要从jdk的bin目录下找到复制到这个里面,就可以使用…...
存储器的性能指标以及层次化存储器
存储器的性能指标 存储器有三个性能指标:速度、容量和位价(每位价格) 1.存储速度 (1)存取时间 想衡量存储速度,最直观的指标就是完成一次存储器读写操作所需要的时间,这叫做存取时间&#x…...
【C++】C++入门的杂碎知识点
思维导图大纲: namespac命名空间 什么是namespace命名空间namespace命名空间有什么用 什么是命名空间 namespace命名空间是一种域,它可以将内部的成员隔绝起来。举个例子,我们都知道有全局变量和局部变量,全局变量存在于全局域…...
springboot 整合redis问题,缓存击穿,穿透,雪崩,分布式锁
boot整合redis 压力测试出现失败 解决方案 排除lettuce 使用jedis <!-- 引入redis --><dependency><groupId>org.springframework.boot</groupId><artifactId>spring-boot-starter-data-redis</artifactId><exclusions><exclus…...
免费个人站 独立站 wordpress 自建网站
制作免费网站 | 免费网站构建器 | WordPress.com https://bioinformatics7.wordpress.com WordPress.com...
散列函数的基本概念
散列函数 算法不能设计太过复杂 太复杂的散列函数,势必会消耗很多计算时间 散列函数生成的值要尽可能随机并且均匀分布 这样才能避免或者最小化散列冲突而且即便出现来冲突,散列到每个槽里的数据也会比较平均,不会出现某个槽内数据特别多…...
【C++拷贝构造函数深浅拷贝】
拷贝构造函数 注意:访问权限是public 拷贝构造函数:类名(const 类名& 对象名){} 可以有多个参数 。 没有常引用就是普通构造函数 如果不写,编译器自己会给一个(作用仅仅是赋值,默认拷…...
快速编译安装tensorrt_yolo
快速编译安装 安装 tensorrt_yolo 通过 PyPI 安装 tensorrt_yolo 模块,您只需执行以下命令即可: pip install -U tensorrt_yolo 如果您希望获取最新的开发版本或者为项目做出贡献,可以按照以下步骤从 GitHub 克隆代码库并安装: …...
外盘黄金期货需要注意什么?
为大家整理了关于黄金做单的五大原则,相信对于新手投资者来说肯定会产生一定的帮助。 1、看多空:主要有两种方法,基本面判断和技术面判断,基本面判断,主要是借助基本信息面,如政策。供需,产量…...
Allegro光绘Gerber文件、IPC网表、坐标文件、装配PDF文件导出打包
Allegro光绘Gerber文件、IPC网表、坐标文件、装配PDF文件导出打包 一、Gerber文件层叠与参数设置二、装配图文件设置导出三、光绘参数设置四、Gerber孔符图、钻孔表及钻孔文件输出五、输出Gerber文件六、输出IPC网表七、导出坐标文件八、文件打包 一、Gerber文件层叠与参数设置…...
mysql的索引可以分为哪些类型
MySQL的索引是用于提高查询性能的重要数据结构。不同类型的索引在不同的使用场景中具有不同的优势和适用性。 1. 主键索引(Primary Key Index) 特点:唯一且不允许 NULL 值。用途:唯一标识表中的每一行。自动创建:定义…...
Content type ‘application/x-www-form-urlencoded;charset=UTF-8‘ not supported
Content type application/x-www-form-urlencoded;charsetUTF-8 not supported 问题背景新增页面代码改造 问题背景 这里有一个需求,前端页面需要往后端传参,参数包括主表数据字段以及子表数据字段,由于主表与子表为一对多关系,在…...
【JavaEE进阶】——利用框架完成功能全面的图书管理系统
目录 🚩项目所需要的技术栈 🚩项目准备工作 🎈环境准备 🎈数据库准备 🚩前后端交互分析 🎈登录 📝前后端交互 📝实现服务器代码 📝测试前后端代码是否正确 &am…...
WDF驱动开发-内存缓冲区
驱动程序通常使用内存缓冲区向/从框架和其他驱动程序传递数据,或在本地存储信息。 WDF常见的内存缓冲区包括框架内存对象(WDFMEMORY)、 lookaside、 MDL 和 本地缓冲区。 使用框架内存对象 框架使用 内存对象 来描述驱动程序从中接收并传递给框架的内存缓冲区。 每…...
c语言连接两个字符串
在C语言中,连接两个字符串可以使用 strcat 函数。这个函数将一个字符串复制到另一个字符串的末尾。使用 strcat 函数之前,需要确保目标字符串有足够的空间来容纳源字符串,否则可能会导致缓冲区溢出。 下面是一个使用 strcat 函数连接两个字符…...
基于springboot的大学计算机基础网络教学系统
文章目录 项目介绍主要功能截图:部分代码展示设计总结项目获取方式🍅 作者主页:超级无敌暴龙战士塔塔开 🍅 简介:Java领域优质创作者🏆、 简历模板、学习资料、面试题库【关注我,都给你】 🍅文末获取源码联系🍅 项目介绍 基于springboot的大学计算机基础网络教学…...
UOS常用命令
shutdown 关机 reboot 重启 reboot -f 强制重启 history 查看使用的历史命令 history -c 清空命令行常见目录结构 /bin 存储常用用户指令 /boot 存放用于系统引导时使用的各种文件 /dev 存放设备文件 /etc 存放系统,服务的配置…...
vue3 如何给表单添加表单效验+正则表达式
校验要求 我们的表单中有密码、电话号码 ,两项。 我们设置用密码为3到20位的非空字符 电话号码就用目前用的电话号码正则表达式,要求手机号码以 1 开头,第二位为 3 到 9 之间的数字,后面跟着任意 9 个数字,总共是 11…...
JavaScript算法实现dfs查找省市区路径
需求 存在如下数组,实现一个算法通过输入区名,返回省->市->区格式的路径,例如输入西湖区,返回浙江省->杭州市->西湖区。 // 定义省市区的嵌套数组 const data [{name: "浙江省",children: [{name: "…...
map文件分析
以下是一个具体的map文件示例,并附上详细的描述,帮助你更好地理解如何读取和分析map文件: 示例map文件 Memory ConfigurationName Origin Length Attributes FLASH 0x08000000 0x0…...
MySQL-创建表~数据类型
070-创建表 create table t_user(no int,name varchar(20),gender char(1) default 男);071-插入数据 语法格式: insert into 表名(字段名1, 字段名2, 字段名3,......) values (值1,值2,值3,......);insert into t_user(no, name, gender) values(1, Cupid, 男);字…...
【鸿蒙 HarmonyOS】Swiper组件
一、背景 项目中通常会遇到图片轮播,内容轮播的场景;如:在一些应用首页显示推荐的内容时,需要用到轮播显示的能力。 二、源码地址 ✍Gitee开源项目地址👉:https://gitee.com/cheinlu/harmony-os-next-swi…...
玩具机器人脚本适合场景
玩具机器人脚本作为一个模拟的玩具机器人脚本,适合以下场合: 1.教育和学习:对于初学者和编程爱好者来说,这个脚本是一个很好的学习工具,可以帮助他们理解如何编写和执行简单的控制逻辑。 2.在计算机科学、机器人技术或…...
人工智能模型组合学习的理论和实验实践
组合学习,即掌握将基本概念结合起来构建更复杂概念的能力,对人类认知至关重要,特别是在人类语言理解和视觉感知方面。这一概念与在未观察到的情况下推广的能力紧密相关。尽管它在智能中扮演着核心角色,但缺乏系统化的理论及实验研…...
wordpress 科技类主题/优化内容
weblogic密码修改 by Alex-luo 四夕alex step1,进入web端console控制台进入域结构安全服务如图:双击myrealm选择用户和组展开如图:双击weblogic选择口令如图:Web端修改密码要求长度8位,必须字母与数字组合我修改全部为…...
广东城乡建设厅网站首页/怎么看百度关键词的搜索量
本人用VBMO开发近两年,中间积累了一些小经验,对老手可能没用,但对新手可能有一点帮助。下面把它记下来,也算是一个小小的总结。很多东西没想起来,下次更新时补上。 大部分内容只是概述了实现的思路,具体实现…...
网站设计建网站/软件推广赚佣金渠道
一、支付宝支付(AliPay)1、开发步骤:1>先与支付宝签约,获得商户ID(partner)和账号ID(seller) (这个主要是公司的负责)2>下载相应的公钥私钥文件(加密签名用)3>下载支付宝SDK4>生成订单信息5>调用支付宝客户端,由支付宝客户端跟…...
做云词图的网站/软文是什么
交替放置的玻璃杯 题目:有2n个玻璃杯挨个排成一排,前n个装满苏打水,其余n个杯子为空。交换杯子的位置,使之按照满—空—满—空的模式排列,而且杯子移动的次数要最少 解题思路:使用插入排序算法,将白色的杯子一个个插入…...
个人能不能自己做网站/快速排名精灵
一般情况下,win7系统安装后打开本地磁盘会显示C盘、D盘、F盘等等,可是一些用户说 win7 64位系统 没有d盘,也不知道怎么回事,有的时候我们测试软件需要安装到D盘,这是该如何解决呢?针对此故障问题࿰…...