广告
返回顶部
首页 > 资讯 > 后端开发 > 其他教程 >C语言:传值与传址交换整数
  • 653
分享到

C语言:传值与传址交换整数

2024-04-02 19:04:59 653人浏览 安东尼
摘要

目录传值调用传址调用总结传值调用 要想交换两个整数的值,我们可以自定义一个函数,来实现这个过程。具体代码如下: #include <stdio.h> void Sw

传值调用

要想交换两个整数的值,我们可以自定义一个函数,来实现这个过程。具体代码如下:


#include <stdio.h>

void Swap1(int x, int y)
{
	int z = 0;
	z = x;
	x = y;
	y = z;
}

int main()
{
	int a = 10;
	int b = 20;
	pirntf("交换前:a=%d  b=%d", a, b);
	Swap1(a, b);
	pirntf("交换前:a=%d  b=%d", a, b);
	return 0;
}

按照一般的逻辑,大多数人应该都会这样写出这样的程序。但这个程序是否能达到目的呢》我们可以运行检验一下。

image-20210713102225191

很显然,a,b两个数的值并未发生改变。我们可以通过调试的方法来找出原因。

image-20210713102531340

通过这里我们可以知道,x,y的确接收了a,b的值,但是,a,b,x,y的地址都不相同,也就是说,这四个变量在内存中开辟了四块空间。那么,在Swap函数中,x,y的值的确互换了,但这仅仅是在0x0118fd90和0x0118fd94这两块空间里进行的交换,与a,b无关.

image-20210713102921736

所以,这段代码无法交换两个整数的值。x,y仅仅接收了a,b的值,这个过程也被称为传值调用。

传址调用

通过前面的分析,我们可以知道,要想交换a,b的值,需要在a,b所开辟的两块空间内进行操作。根据我们所学的知识,这时,我们就应该用到指针。因为指针变量可以存放地址。具体代码如下:


#include <stdio.h>

void Swap2(int* pa, int* pb)
{
	int z = 0;
	z = *pa;
	*pa = *pb;
	*pb = z;
}

int main()
{
	int a = 10;
	int b = 20;
	printf("交换前:a=%d  b=%d\n", a, b);
	Swap2(&a, &b);
	printf("交换后:a=%d  b=%d\n", a, b);
	return 0;
}

运行结果为:

image-20210713104107093

此时,这段代码就很好的解决了我们的问题。pa,pb用来接收a,b的地址,这个过程称为传址调用。

综上所述,Swap1在被调用的时候,实参传给形参,其实形参是实参的一份临时拷贝,改变形参,不能改变实参。Swap2在被调用的时候,函数和函数外边的变量建立起正真的联系,也就是函数内部可以直接操作函数外部的变量。这也就是传值调用和传址调用的区别。

总结

本篇文章就到这里了,希望能给你带来帮助,也希望您能够多多关注编程网的更多内容!

--结束END--

本文标题: C语言:传值与传址交换整数

本文链接: https://www.lsjlt.com/news/132002.html(转载时请注明来源链接)

有问题或投稿请发送至: 邮箱/279061341@qq.com    QQ/279061341

本篇文章演示代码以及资料文档资料下载

下载Word文档到电脑,方便收藏和打印~

下载Word文档
猜你喜欢
  • C语言:传值与传址交换整数
    目录传值调用传址调用总结传值调用 要想交换两个整数的值,我们可以自定义一个函数,来实现这个过程。具体代码如下: #include <stdio.h> void Sw...
    99+
    2022-11-12
  • C语言中传值与传址交换整数的示例分析
    小编给大家分享一下C语言中传值与传址交换整数的示例分析,希望大家阅读完这篇文章之后都有所收获,下面让我们一起去探讨吧!传值调用要想交换两个整数的值,我们可以自定义一个函数,来实现这个过程。具体代码如下:#include <s...
    99+
    2023-06-20
  • C语言值传递和地址传递详解
    目录一. 值传递二.地址传递总结一. 值传递 我们举一个例子: 写一个函数找出两个整数中的最大值。 #include<stdio.h> //get_max函数 int ...
    99+
    2022-11-13
  • C语言值传递和地址传递的示例分析
    这篇文章给大家分享的是有关C语言值传递和地址传递的示例分析的内容。小编觉得挺实用的,因此分享给大家做个参考,一起跟随小编过来看看吧。一. 值传递我们举一个例子:写一个函数找出两个整数中的最大值。#include<stdio.h>...
    99+
    2023-06-26
  • C语言形参和实参传值和传址详解刨析
    目录例题分析实参与形参实际参数(实参):形式参数(形参):修改分析传值和传址传值调用传址调用讲解知识点之前,我们先来做一道题! 例题 写一个函数可以交换两个整形变量的内容 例如: 交...
    99+
    2022-11-12
  • C语言怎么交换两个数的值
    本文小编为大家详细介绍“C语言怎么交换两个数的值”,内容详细,步骤清晰,细节处理妥当,希望这篇“C语言怎么交换两个数的值”文章能帮助大家解决疑惑,下面跟着小编的思路慢慢深入,一起来学习新知识吧。使用临时变量以下实例演示了交换两个浮点数的值。...
    99+
    2023-06-17
  • C语言函数返回值与参数传递实例分析
    本篇内容介绍了“C语言函数返回值与参数传递实例分析”的有关知识,在实际案例的操作过程中,不少人都会遇到这样的困境,接下来就让小编带领大家学习一下如何处理这些情况吧!希望大家仔细阅读,能够学有所成!一:参数传...
    99+
    2022-10-19
  • c语言中怎么交换两个数的值
    在C语言中,可以使用几种方法来交换两个数的值。1. 使用第三个变量:```cint a = 5;int b = 10;int temp;temp = a;a = b;b = temp;```2. 使用加减法:```cint a = 5;...
    99+
    2023-08-11
    c语言
  • C语言之函数返回值与参数传递案例教程
    C语言函数返回值与参数传递 一:参数传递 C语言的函数中必不可少的就是参数传递,可以采用传值和传指针两种方式。 1.传值的形式:只是将参数值的拷贝传给函数,并非参数本体如: in...
    99+
    2022-11-12
  • C语言不使用临时变量怎么交换两个整数的值
    本文小编为大家详细介绍“C语言不使用临时变量怎么交换两个整数的值”,内容详细,步骤清晰,细节处理妥当,希望这篇“C语言不使用临时变量怎么交换两个整数的值”文章能帮助大家解决疑惑,下面跟着小编的思路慢慢深入,一起来学习新知识吧。不使用临时变量...
    99+
    2023-06-17
  • C语言函数传递数组和传递地址的区别你知道吗
    目录传递数值传递地址注:总结传递数值 code: #include <stdio.h> void deliveryData(int data) { data = d...
    99+
    2022-11-12
  • c语言实现两个值互相交换的函数
    c语言中实现两个值互换的函数。 1、 #include <stdio.h> void swap(int n1, int n2) { int tmp; ...
    99+
    2022-11-12
  • c语言如何实现两个值互相交换的函数
    小编给大家分享一下c语言如何实现两个值互相交换的函数,相信大部分人都还不怎么了解,因此分享这篇文章给大家参考一下,希望大家阅读完这篇文章后大有收获,下面让我们一起去了解一下吧!c语言中实现两个值互换的函数。#include <...
    99+
    2023-06-15
  • C生万物C语言宏将整数二进制位的奇偶数位交换
    目录✒题目分析 && 实现思路[位运算]1、获取这个整数的奇数位和偶数位2、使用移位运算使【奇变偶】【偶变奇】3、合并奇数位和偶数位⌨代码分析1、代码展示2、算法图解...
    99+
    2023-02-09
    C语言奇偶数位交换 C语音宏整数二进制位
  • C语言中sizeof与整型数据存储及数据类型取值范围
    这篇文章主要讲解了“C语言中sizeof与整型数据存储及数据类型取值范围”,文中的讲解内容简单清晰,易于学习与理解,下面请大家跟着小编的思路慢慢深入,一起来研究和学习“C语言中sizeof与整型数据存储及数据类型取值范围”吧!1.关键字si...
    99+
    2023-07-02
  • C语言中字符串与各数值类型之间的转换方法
    C语言的算法设计中,经常会需要用到字符串,而由于c语言中字符串并不是一个默认类型,其标准库stdlib设计了很多函数方便我们处理字符串与其他数值类型之间的转换。 首先放上一段展示各函...
    99+
    2022-11-11
  • 怎么在C语言中对字符串与各数值类型进行转换
    本篇文章给大家分享的是有关怎么在C语言中对字符串与各数值类型进行转换,小编觉得挺实用的,因此分享给大家学习,希望大家阅读完这篇文章后可以有所收获,话不多说,跟着小编一起来看看吧。首先放上一段展示各函数使用的代码,大家也可以copy到自己的机...
    99+
    2023-06-14
  • C语言深入探究sizeof与整型数据存储及数据类型取值范围
    目录1.关键字sizeof2.整型数据存储深入3.数据类型取值范围深入1.关键字sizeof sizeof 与 strlen 是我们日常打代码时经常使用到的两个“工具&r...
    99+
    2022-11-13
软考高级职称资格查询
编程网,编程工程师的家园,是目前国内优秀的开源技术社区之一,形成了由开源软件库、代码分享、资讯、协作翻译、讨论区和博客等几大频道内容,为IT开发者提供了一个发现、使用、并交流开源技术的平台。
  • 官方手机版

  • 微信公众号

  • 商务合作