29.【C语言】自定义函数
1、自定义详解
*提示:先看第12,19篇
例:写一个程序交换两个变量的值
#define _CRT_SECURE_NO_WARNINGS
#include <stdio.h>
void swap(int x, int y)
{int z = 0;z = x;x = y;y = z;
}
int main()
{int a = 10;int b = 20;swap(a, b);printf("%d %d",a, b);
}
函数名前些void,表示无返回类型,即不需要写return xxx;
输出结果显示:a,b并没有交换
打开调试模式,键入F11,打开监视
程序执行一遍后:
x和y的值虽然被交换,但是a和b的值并没有交换
原因:由&a &b &x &y知道:a和x的地址不同,b和y的地址不同
另一种解释(见第3点):swap在被调用时,实参(a,b)传给形参(x,y),形参是实参的临时拷贝,所以改变形参,不改变实参
解决方案:回想第19篇用地址(*pa)来控制变量(a),让a和x,b和y建立联系
-->把a,b的地址交给自定义函数的指针
#define _CRT_SECURE_NO_WARNINGS
#include <stdio.h>
void swap(int* pa, int* pb)
{int z = 0;z = *pa;*pa = *pb;*pb = z;//*pa等效于main函数中的a,*pb等效于main函数中的b
}
int main()
{int a = 10;int b = 20;swap(&a, &b);printf("%d %d",a, b);
}
&a和&*pa,&b和&*pb一样
2.疑问解答:
Q:为什么第12篇创建函数时为什么没有使用指针?
A:第12篇讲的是求两个数的和,并没有改变输入的x和y,因此不用指针。所以自定义函数要使用指针的前提是改变变量
3.函数的参数
实际参数(实参):
真实传给函数的参数,叫实参。实参可以是:常量、变量、表达式、函数等。无论实参是何种类
型的量,在进行函数调用时,它们都必须有确定的值,以便把这些值传送给形参。
形式参数(形参):
形式参数是指函数名后括号中的变量,因为形式参数只有在函数被调用的过程中才实例化(分配
内存单元),所以叫形式参数。形式参数当函数调用完成之后就自动销毁了。因此形式参数只在
函数中有效(生命周期类似局部变量)。
如:swap(a,b);的a和b是实际参数,swap(2,3)的2和3是实际参数,void swap(m,n)的m和n是形式参数
4.函数的调用方式
01传值调用
函数的形参和实参分别占有不同内存块,对形参的修改不会影响实参。
void swap(int x, int y)
{int z = 0;z = x;x = y;y = z;
}
02传址调用
传址调用是把函数外部创建变量的内存地址传递给函数参数的一种调用函数的方式,这种传参方式可以让函数和函数外边的变量建立起正真的联系,也就是函数内部可以直接操作函数外部的变量
void swap(int* pa, int* pb)
{int z = 0;z = *pa;*pa = *pb;*pb = z;
}
相关文章:

29.【C语言】自定义函数
1、自定义详解 *提示:先看第12,19篇 例:写一个程序交换两个变量的值 #define _CRT_SECURE_NO_WARNINGS #include <stdio.h> void swap(int x, int y) {int z 0;z x;x y;y z; } int main() {int a 10;int b 20;swap(a, b);printf("%d…...
C++面向对象编程 基础篇(3)函数基础
3、函数基础 3.1 函数默认参数 在C中,函数的形参列表中的形参是可以有默认值的 注意事项: 如果某个位置已经有了默认参数,往后的形参都要有默认参数 函数声明和函数实现只能有一个有默认参数 示例: //如果自己传入参数&…...

excel有条件提取单元格特定文本(筛选纯文字的单元格或含有数字的单元格、单元格提取不同的文本长度)
实际工作背景 需要对导出的银行流水中的数十个村以及对应的村小组进行分组统计,但是初始的表格中村和小组是混在一起的,如下图所示: 目的:将大树村和大树村小组名称分别筛选出来 1.观察发现,大树村小组的单元格第4…...

HBase 在统一内容平台业务的优化实践
作者:来自 vivo 互联网服务器团队-Leng Jianyu、Huang Haitao HBase是一款开源高可靠性、扩展性、高性能和灵活性的分布式非关系型数据库,本文围绕数据库选型以及使用HBase的痛点展开,从四个方面对HBase的使用进行优化,取得了一些…...

【异常解决】Unable to start embedded Tomcat Nacos 启动报错
Unable to start embedded Tomcat Nacos 启动报错解决方案 一、背景描述二、原因分析三、解决方案 一、背景描述 Windows 本地启动 Nacos(2.2.0) 服务,控制台报错 Unable to start embedded Tomcat。 报错信息:Unable to start …...

【Java面向对象】对象和类
文章目录 1.为对象定义类2.定义类2.1 主类 3.类与对象3.1 构造方法3.2 通过引用变量访问对象3.3 访问对象的数据和方法3.4 引用数据域和 null 值3.5 基本类型变量和引用类型变量的区别 4.常见的类 1.为对象定义类 面向对象程序设计(OOP) 就是使用对象进行程序设计。对象 (obje…...
在微服务架构架构中父工程中的`<dependencyManagement>`和 `<dependencies>`的区别
在微服务架构架构中父工程中的<dependencyManagement>和 <dependencies>的区别: 在微服务架构中,通常会有一个父工程(或称作聚合工程)来管理一组相关的子模块(即各个微服务)。Maven 的 <de…...
Docker安装Zookeeper、RocketMQ
安装Zookeeper 拉取镜像 docker pull zookeeper:3.9.2启动容器 -d后台启动,-p映射容器2181端口到宿主机2181端口,限制容器最大内存占用为128m,–restart容器自动重启 docker run -d -p 2181:2181 -m 128m --restartalways --name zookeepe…...

Ubuntu 磁盘扩容
1.下载工具 sudo apt-get install gparted 2.调整大小...
如何在QGC中接收和处理无人机上传的各种传感器数据(如GPS、IMU等)。
在 QGroundControl (QGC) 中接收和处理无人机上传的各种传感器数据(如 GPS、IMU 等),主要通过 MAVLink 协议实现。MAVLink 是一种轻量级的消息传输协议,用于无人机和地面站之间的通信。QGC 通过 MAVLink 消息接收来自无人机的传感…...

Spring配置Bean自己的关系:继承和依赖
继承:这里的继承不是Java中类之间的继承, 是指配置文件中Bean配置项之间的继承。 用parent属性,配置要继承的bean,这样可以把相同的部分去去掉,下上两个bean的关系就变成了父bean和子bean, 子bean可以继承父…...
科技与狠活
科技与狠货,已经见怪不怪了 从黑龙江到海南,从上海到新疆,960万平方公里,十三亿人,每个地方都是科技与狠活 在抖音上面看到一个评论,如果蔬菜没科技与狠活,估计会很贵,但是我想到在…...

Vue:axios请求数据转存leanCloud
思路: 采用axios请求需要的数据,查看leanCloud中数据批量存储的格式,将两个数据进行对比,将请求得到的数据封装为云服务存储的格式,再发leanCloud存储数据的请求完成转存 1.封装js代码 //批量操作新增数据 import r…...

实战篇(九):解锁3D魔方的秘密:用Processing编程实现交互式魔方
解锁3D魔方的秘密:用Processing编程实现交互式魔方 使用 Processing 创建一个 3D 魔方效果展示1. 安装 Processing2. 项目结构3. 代码实现4. 代码解释4.1. 初始化魔方4.2. 绘制魔方4.3. 处理鼠标事件4.4. 检查点击的面4.5. 旋转面和最终确定旋转5. 运行和测试6. 细节解释6.1. …...
Android系统上常见的性能优化工具
Android系统上常见的性能优化工具 在Android系统开发中,性能优化是一个重要的任务,有许多工具可以帮助你进行各种方面的性能分析和优化。以下是一些常见的Android性能优化工具及其用途和使用方法: 1. Android Studio Profiler 功能: 提供CP…...

TG创建小程序交互APP登录以及机器人信息
1、搜索 BotFather ,输入命令 /newbot 创建机器人。 2、修改机器人信息 /mybots 编辑名称 : 修改机器人名称 编辑关于: 修改关于 hayden yyds,修改以后打开机器人会出现在下图 编辑描述 : 机器人的描述 编辑描述图片 : 机器人的图片 编辑 Botpic…...

探索大模型能力--prompt工程
1 prompt工程是什么 1.1 什么是Prompt? LLM大语言模型终究也只是一个工具,我们不可能每个人都去训一个大模型,但是我们可以思考如何利用好大模型,让他提升我们的工作效率。就像计算器工具一样,要你算10的10倍&#x…...

【经验分享】运用云服务器实现挂机手机网课的操作,部分手机软件适用
目录 第一步下载手机模拟器 第二步找到模拟器的文件位置 第三步找到模拟器的下载文件进行打包处理 编辑 第四步将模拟器粘贴到云服务器上 第五步运行程序 第六步在模拟器中下载网课软件 第一步下载手机模拟器 这里我下载的是联想模拟器,用来模拟手机环境 随…...

【从0到1进阶Redis】主从复制 — 主从机宕机测试
上一篇:【从0到1进阶Redis】主从复制 测试:主机断开连接,从机依旧连接到主机的,但是没有写操作,这个时候,主机如果回来了,从机依旧可以直接获取到主机写的信息。 如果是使用命令行,来…...

Flask启动5000端口后关不掉了?
事情是这样的: 使用python app.py启动flask应用后,又启动了另一个flask测试应用,也能启动成功,也没有报设么端口冲突,关闭黑窗口后,访问还是有守护进程在运行, 为什么我知道5000还在运行&#…...
Java 语言特性(面试系列1)
一、面向对象编程 1. 封装(Encapsulation) 定义:将数据(属性)和操作数据的方法绑定在一起,通过访问控制符(private、protected、public)隐藏内部实现细节。示例: public …...
golang循环变量捕获问题
在 Go 语言中,当在循环中启动协程(goroutine)时,如果在协程闭包中直接引用循环变量,可能会遇到一个常见的陷阱 - 循环变量捕获问题。让我详细解释一下: 问题背景 看这个代码片段: fo…...
在鸿蒙HarmonyOS 5中实现抖音风格的点赞功能
下面我将详细介绍如何使用HarmonyOS SDK在HarmonyOS 5中实现类似抖音的点赞功能,包括动画效果、数据同步和交互优化。 1. 基础点赞功能实现 1.1 创建数据模型 // VideoModel.ets export class VideoModel {id: string "";title: string ""…...

【网络安全产品大调研系列】2. 体验漏洞扫描
前言 2023 年漏洞扫描服务市场规模预计为 3.06(十亿美元)。漏洞扫描服务市场行业预计将从 2024 年的 3.48(十亿美元)增长到 2032 年的 9.54(十亿美元)。预测期内漏洞扫描服务市场 CAGR(增长率&…...
pam_env.so模块配置解析
在PAM(Pluggable Authentication Modules)配置中, /etc/pam.d/su 文件相关配置含义如下: 配置解析 auth required pam_env.so1. 字段分解 字段值说明模块类型auth认证类模块,负责验证用户身份&am…...

高频面试之3Zookeeper
高频面试之3Zookeeper 文章目录 高频面试之3Zookeeper3.1 常用命令3.2 选举机制3.3 Zookeeper符合法则中哪两个?3.4 Zookeeper脑裂3.5 Zookeeper用来干嘛了 3.1 常用命令 ls、get、create、delete、deleteall3.2 选举机制 半数机制(过半机制࿰…...
工程地质软件市场:发展现状、趋势与策略建议
一、引言 在工程建设领域,准确把握地质条件是确保项目顺利推进和安全运营的关键。工程地质软件作为处理、分析、模拟和展示工程地质数据的重要工具,正发挥着日益重要的作用。它凭借强大的数据处理能力、三维建模功能、空间分析工具和可视化展示手段&…...
linux 错误码总结
1,错误码的概念与作用 在Linux系统中,错误码是系统调用或库函数在执行失败时返回的特定数值,用于指示具体的错误类型。这些错误码通过全局变量errno来存储和传递,errno由操作系统维护,保存最近一次发生的错误信息。值得注意的是,errno的值在每次系统调用或函数调用失败时…...

如何将联系人从 iPhone 转移到 Android
从 iPhone 换到 Android 手机时,你可能需要保留重要的数据,例如通讯录。好在,将通讯录从 iPhone 转移到 Android 手机非常简单,你可以从本文中学习 6 种可靠的方法,确保随时保持连接,不错过任何信息。 第 1…...
鸿蒙中用HarmonyOS SDK应用服务 HarmonyOS5开发一个医院查看报告小程序
一、开发环境准备 工具安装: 下载安装DevEco Studio 4.0(支持HarmonyOS 5)配置HarmonyOS SDK 5.0确保Node.js版本≥14 项目初始化: ohpm init harmony/hospital-report-app 二、核心功能模块实现 1. 报告列表…...