调用自定义函数交换两个变量以及调用函数比较三个数的大小

本文主要是介绍调用自定义函数交换两个变量以及调用函数比较三个数的大小,希望对大家解决编程问题提供一定的参考价值,需要的开发者们随着小编来一起学习吧!

调用自定义函数交换两个变量(体会传值与传地址)

首先巩固一下定义上的区别:
传值与传地址区别

传值:
是把是实参的值赋给形参,对形参的更改不会影响实参的值,仅将对象的值传递给目标对象,就相当于copy,系统为目标对象重新开辟一个完全相同的内存栈空间,然后把对象的值复制到栈中。

传地址:
传址是把函数外部创建变量的内存地址传递给函数参数,不是普通的如int,传递地址以后,系统在栈中开辟空间存放地址,实参和形参都指向同一个对象。这种传参方式可以让函数和函数外面的变量建立起真正的联系,也就是函数内部可以直接操作函数外部的变量。

下面是去体会一下两个区别的代码:

#include<stdio.h>
int swap1(int a, int b)//不是指针,进行的是传值
{int temp;temp = a;a = b;b = temp;return a, b;}
void swap2(int *a, int *b)//传地址
{int temp;temp = *a;*a = *b;*b = temp;}
int main()
{int x1, x2;scanf("%d%d", &x1, &x2);swap1(x1, x2);printf("a=%d,b=%d\n", x1, x2);//传值输出,两个数没有交换swap2(&x1, &x2);printf("a=%d,b=%d\n", x1, x2);//传地址输出,两个值已经交换return 0;
}

运行输出对比:

在这里插入图片描述

调用自定义函数比较三个数的大小

这里比较三个数的大小,使用了类似冒泡排序的思想(前后两个值不断进行比较大小,直至排序完成,后面会对冒泡排序进行详解),最后将最大值输出到a上,以此类推。下面看一下代码:

#include<stdio.h>
void swap(int *a, int *b)
{int temp;temp = *a;*a = *b;*b = temp;
}
int main()
{int a, b, c;printf("请输入三个数:\n");scanf("%d%d%d", &a, &b, &c);if (a < b){swap(&a, &b);}if (b < c){swap(&b, &c);}if (a < b){swap(&a, &b);}printf("a=%d,b=%d,c=%d\n", a, b, c);
}

最后简单说一下传值与穿地址的区别,如果是想要改变原来所赋值的数则需要穿地址,如果只是进行判断,不改变原来的数,则只进行传值即可。

这篇关于调用自定义函数交换两个变量以及调用函数比较三个数的大小的文章就介绍到这儿,希望我们推荐的文章对编程师们有所帮助!



http://www.chinasem.cn/article/845148

相关文章

百度/小米/滴滴/京东,中台架构比较

小米中台建设实践 01 小米的三大中台建设:业务+数据+技术 业务中台--从业务说起 在中台建设中,需要规范化的服务接口、一致整合化的数据、容器化的技术组件以及弹性的基础设施。并结合业务情况,判定是否真的需要中台。 小米参考了业界优秀的案例包括移动中台、数据中台、业务中台、技术中台等,再结合其业务发展历程及业务现状,整理了中台架构的核心方法论,一是企业如何共享服务,二是如何为业务提供便利。

【前端学习】AntV G6-08 深入图形与图形分组、自定义节点、节点动画(下)

【课程链接】 AntV G6:深入图形与图形分组、自定义节点、节点动画(下)_哔哩哔哩_bilibili 本章十吾老师讲解了一个复杂的自定义节点中,应该怎样去计算和绘制图形,如何给一个图形制作不间断的动画,以及在鼠标事件之后产生动画。(有点难,需要好好理解) <!DOCTYPE html><html><head><meta charset="UTF-8"><title>06

2. c#从不同cs的文件调用函数

1.文件目录如下: 2. Program.cs文件的主函数如下 using System;using System.Collections.Generic;using System.Linq;using System.Threading.Tasks;using System.Windows.Forms;namespace datasAnalysis{internal static

hdu1171(母函数或多重背包)

题意:把物品分成两份,使得价值最接近 可以用背包,或者是母函数来解,母函数(1 + x^v+x^2v+.....+x^num*v)(1 + x^v+x^2v+.....+x^num*v)(1 + x^v+x^2v+.....+x^num*v) 其中指数为价值,每一项的数目为(该物品数+1)个 代码如下: #include<iostream>#include<algorithm>

变量与命名

引言         在前两个课时中,我们已经了解了 Python 程序的基本结构,学习了如何正确地使用缩进来组织代码,并且知道了注释的重要性。现在我们将进一步深入到 Python 编程的核心——变量与命名。变量是我们存储数据的主要方式,而合理的命名则有助于提高代码的可读性和可维护性。 变量的概念与使用         在 Python 中,变量是一种用来存储数据值的标识符。创建变量很简单,

如何在页面调用utility bar并传递参数至lwc组件

1.在app的utility item中添加lwc组件: 2.调用utility bar api的方式有两种: 方法一,通过lwc调用: import {LightningElement,api ,wire } from 'lwc';import { publish, MessageContext } from 'lightning/messageService';import Ca

自定义类型:结构体(续)

目录 一. 结构体的内存对齐 1.1 为什么存在内存对齐? 1.2 修改默认对齐数 二. 结构体传参 三. 结构体实现位段 一. 结构体的内存对齐 在前面的文章里我们已经讲过一部分的内存对齐的知识,并举出了两个例子,我们再举出两个例子继续说明: struct S3{double a;int b;char c;};int mian(){printf("%zd\n",s

C++操作符重载实例(独立函数)

C++操作符重载实例,我们把坐标值CVector的加法进行重载,计算c3=c1+c2时,也就是计算x3=x1+x2,y3=y1+y2,今天我们以独立函数的方式重载操作符+(加号),以下是C++代码: c1802.cpp源代码: D:\YcjWork\CppTour>vim c1802.cpp #include <iostream>using namespace std;/*** 以独立函数

《数据结构(C语言版)第二版》第八章-排序(8.3-交换排序、8.4-选择排序)

8.3 交换排序 8.3.1 冒泡排序 【算法特点】 (1) 稳定排序。 (2) 可用于链式存储结构。 (3) 移动记录次数较多,算法平均时间性能比直接插入排序差。当初始记录无序,n较大时, 此算法不宜采用。 #include <stdio.h>#include <stdlib.h>#define MAXSIZE 26typedef int KeyType;typedef char In

Spring 源码解读:自定义实现Bean定义的注册与解析

引言 在Spring框架中,Bean的注册与解析是整个依赖注入流程的核心步骤。通过Bean定义,Spring容器知道如何创建、配置和管理每个Bean实例。本篇文章将通过实现一个简化版的Bean定义注册与解析机制,帮助你理解Spring框架背后的设计逻辑。我们还将对比Spring中的BeanDefinition和BeanDefinitionRegistry,以全面掌握Bean注册和解析的核心原理。