广告
返回顶部
首页 > 资讯 > 后端开发 > 其他教程 >C语言用fun函数实现两个数的交换方式
  • 579
分享到

C语言用fun函数实现两个数的交换方式

C语言fun函数C语言两个数交换C语言fun 2022-12-08 20:12:02 579人浏览 泡泡鱼
摘要

目录用fun函数实现两个数的交换函数交换两个数,常见错误总结用fun函数实现两个数的交换 #include <stdio.h> void fun(int *x,int

用fun函数实现两个数的交换

#include <stdio.h>

void fun(int *x,int *y)//定义fun函数,此时需要注意与main函数时的定义方式相同
{
    int t;//定义一个中间变量,用于让两个数交换留一个位置
    t=*x,*x=*y,*y=t;
}
void main()
{
    int a,b;
    scanf("%d %d",&a,&b);//定义两个交换的数
    fun(&a,&b);
    printf("%d  %d\n",a,b);
}

函数交换两个数,常见错误

问题:提供俩个数,利用函数实现交换。

出现的错误情况如下:

  • 第一种情况:值传递;(如函数Swap_err01)
  • 第二种情况:没解引用;(如函数Swap_err02)
  • 第三种情况:悬挂指针。(如函数Swap_err03)

能实现交换两个数的函数,在函数Swap可以实现。

代码如下:

#include <stdio.h>
void Swap_err01(int a,int b)
{
	int tmp;
	tmp = a;
	a = b;
	b = tmp;
}
void Swap_err02(int *p1,int *p2)
{
	int *tmp = p1;
	p1 = p2;
	p2 = tmp;
}
void Swap_err03(int *p1,int *p2)
{
	int *tmp;
	*tmp = *p1;
	*p1 = *p2;
	*p2 = *tmp;
}
void Swap(int *p1,int *p2)
{
	int tmp;
	tmp = *p1;
	*p1 = *p2;
	*p2 = tmp;
}
int main ()
{
	int a=10;
	int b=20;
	printf("a=%d,b=%d\n",a,b);
	
	//Swap_err01(a,b);	
	//Swap_err02(&a,&b);	
	//Swap_err03(&a,&b);
	Swap(&a,&b);
 
	printf("a=%d,b=%d\n",a,b);	
	return 0;
}

编译结果如下:

函数Swap_err01的编译结果:

由结果可见,按值传递,不能达到交换两个数。

按值传递: 函数内部使用的参数称为形参,是通过拷贝实参而来,从而对其进行修改,所以,对原来的实参不会造成修改。 

如下图所示,内部变量互不影响。

函数Swap_err02的编译结果:

由结果可见,换位失败,其主要原因就是因为没有解引用,过程可看下图。

函数Swap_err03的编译结果:

由编译结果可见,实行函数的时候,编译器(Visual Studio 2012)报错了,内容是变量tmp没有被定义,其主要原因是,*tmp为悬挂指针(野指针),野指针:没有访问权限的指针(地址)。

函数Swap的编译结果:

由结果可见,实现了两个数换位,解引用之后,将地址内的值换位。

其过程如下图:

注意:子函数的改变能影响到父函数,一定要传指针和解引用,两个条件缺一不可。

int main ()//父函数
{
    Fun(&a,&b);//子函数
}

总结

以上为个人经验,希望能给大家一个参考,也希望大家多多支持编程网。

--结束END--

本文标题: C语言用fun函数实现两个数的交换方式

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

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

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

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

下载Word文档
猜你喜欢
  • C语言用fun函数实现两个数的交换方式
    目录用fun函数实现两个数的交换函数交换两个数,常见错误总结用fun函数实现两个数的交换 #include <stdio.h> void fun(int *x,int ...
    99+
    2022-12-08
    C语言fun函数 C语言两个数交换 C语言fun
  • 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语言怎么交换两个数的值”,内容详细,步骤清晰,细节处理妥当,希望这篇“C语言怎么交换两个数的值”文章能帮助大家解决疑惑,下面跟着小编的思路慢慢深入,一起来学习新知识吧。使用临时变量以下实例演示了交换两个浮点数的值。...
    99+
    2023-06-17
  • 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语言编写的幂函数的示例:```c#include double power(double base, int exp...
    99+
    2023-09-22
    c语言
  • C语言不使用临时变量怎么交换两个整数的值
    本文小编为大家详细介绍“C语言不使用临时变量怎么交换两个整数的值”,内容详细,步骤清晰,细节处理妥当,希望这篇“C语言不使用临时变量怎么交换两个整数的值”文章能帮助大家解决疑惑,下面跟着小编的思路慢慢深入,一起来学习新知识吧。不使用临时变量...
    99+
    2023-06-17
  • C语言编程之三个方法实现strlen函数
    strlen()函数是来源于库函数<string.h> 是用于计算字符串的长度, 且字符串需要以'\0'结尾 strlen()会计算'\0'前的字符个数。 根据MSDN的...
    99+
    2022-11-12
  • C语言三个函数的模拟实现详解
    目录一、strcpy二、模拟实现strcat三、strcmp总结:一、strcpy //模拟实现strcpy #include<stdio.h> #include<...
    99+
    2022-11-13
  • C语言实现猜数字游戏的两种方法
    目录前言一、游戏描述二、代码实现1.生成游戏菜单2.构建主函数 3.构建游戏函数 三、二分法实现猜数前言 猜数字小游戏是我们大多数人学习C语言时都会了解到的一个有...
    99+
    2022-11-12
  • C语言函数调用的三种实现方法实例
    目录C语言函数第一种方法第二种方法第三种方法总结C语言函数 1.概念:函数是一组一起执行一个任务的语句,每个c程序都必须有一个main函数,程序员可以把代码划分到不同的函数当中去,在...
    99+
    2022-11-13
  • 用c语言编程实现素数判断(判断素数的c语言程序函数)
    以下是一个用C语言编写的判断素数的函数:```c#include #include bool isPrime(int n) {if ...
    99+
    2023-09-22
    c语言
  • C语言用函数指针实现一个特别的计算器
    目录函数指针实现计算器程序的思想用函数指针调用加减乘除函数完整代码与运行截图函数指针 函数指针就是存放函数地址的指针。 函数指针的重要内容: 1.函数指针的使用:函数的类型(指针)(...
    99+
    2022-11-13
  • Go语言分布式函数的实现方式有哪些?
    随着互联网技术的快速发展,分布式技术越来越成为互联网应用的重要组成部分。Go语言作为一门高效的编程语言,其在分布式领域也有着广泛的应用。那么,Go语言分布式函数的实现方式有哪些呢? RPC RPC(Remote Procedure C...
    99+
    2023-09-12
    分布式 unix 函数
  • C语言实现输入两个数字将其按从小到大输出的方法
    代码实例: 1.第一种方法(if) #include <stdio.h> int main() { int a , b; printf("请输入两个整数:"); sc...
    99+
    2022-11-12
  • C语言中pthread_exit()函数实现终止线程的方法
    本篇文章和大家了解一下C语言中pthread_exit()函数实现终止线程的方法。有一定的参考价值,有需要的朋友可以参考一下,希望对大家有所帮助。多线程编程中,线程结束执行的方式有 3 种,分别是:线程将指定函数体中的代码执行完后自行结束;...
    99+
    2023-07-06
  • C语言实现删除某一个数组值的方法
    目录1、前言2、删除数组中的元素1、前言 在家里闲着还是闲着,这几天见证了Python各种数据结构的强大。Python中的数据类型如:列表、元组、字典等都具有其的特点。列表无需要设定...
    99+
    2022-11-12
  • 你知道C语言函数调用常用的2种方式吗
    目录区别原理用途总结本篇博客会讲解C语言函数调用的2种方式,分别是:传值调用和传址调用。这2种函数调用方式有什么区别呢?为什么会有不同的效果呢?分别有哪些用途呢?下面我会一一展开。 ...
    99+
    2023-05-18
    C语言函数调用方式 C语言函数调用 C语言函数
  • C语言多种方法实现一个函数左旋字符串中K个字符
    目录前言法一、将左旋1次这个动作执行k次法二、多次逆序字符串前言 今天看到一个有趣的笔试题:实现一个函数,可以左旋字符串中的k个字符。示例如下: ABCD左旋一个字符得到BCDA A...
    99+
    2022-11-12
  • C语言运用函数的递归实现汉诺塔
    目录1、汉诺塔是如何实现的2、汉诺塔问题画图详解3、汉诺塔问题代码解释总结1、汉诺塔是如何实现的 下面是有三个盘子的示例: 从左到右一次是 A柱 B柱 C柱 A柱:起始位置 B柱:...
    99+
    2022-11-13
软考高级职称资格查询
编程网,编程工程师的家园,是目前国内优秀的开源技术社区之一,形成了由开源软件库、代码分享、资讯、协作翻译、讨论区和博客等几大频道内容,为IT开发者提供了一个发现、使用、并交流开源技术的平台。
  • 官方手机版

  • 微信公众号

  • 商务合作