精华内容
下载资源
问答
  • 利用函数实现数据值交换不使用函数实现直接赋值写函数利用指针变量写函数 不使用函数实现 数据交换值是一个非常简单的语句,我们在 不使用函数 的情况下可以这样: int a = 5;int b = 6;int num = 0; //定义两个数字...

    不使用函数实现

    数据交换值是一个非常简单的语句,我们在 不使用函数 的情况下可以这样:

    int a = 5;int b = 6;int num = 0;
    //定义两个数字a,b和一个中间变量实现数据交换
    	num = a;
    	a = b;
    	b = num;
    	printf("%d %d\n", a, b);//依次输出a,b
    

    在这里插入图片描述我们发现初始化值的a,b在依次输出时数据发生了转换。



    直接赋值写函数

    让我们用同样的思路去利用函数来完成这个练习:

    #include<stdio.h>
    int Exchange1(int a,int b){
    	int num = 0;
    	num = a;
    	a = b;
    	b = num;
    }
    int main(){
    	int x = 5; int y = 6;
    	Exchange1(x, y);
    	printf("%d %d\n", x, y); 
    	return 0;
    }
    

    在这里插入图片描述
    ?为什么输出的x,y没有交换呢?
    为什么相同的逻辑下函数却没与发生数据交换的改变呢?
    这是因为在函数运行的情况下,我仅仅改变了形式参数a,b,却没有改变实际参数x,y的值。

    让我们看看在内存中发生了什么:
    在这里插入图片描述

    如图所示,在函数运行中我只改变了a,b的值,而没有改变x,y的值。



    利用指针变量写函数

    这时我们就要利用指针变量来完成我们的任务。
    代码如下:

    #include<stdio.h>
    int Exchange2(int *a, int *b){
    	int num = 0;
    	num = *a;//*a,*b为解引用
    	*a =* b;
    	*b = num;
    }
    int main(){
    	int x = 5; int y = 6;
    	Exchange2(&x, &y);
    	printf("%d %d\n", x, y);
    	return 0;
    }
    

    注意:*a,*b是解引用的意思,,"解"就是把该地址对应的东西解开,解出来,得到值。

    在这里插入图片描述这时就成功完成我们的交换数据,在内存中的具体为:
    在这里插入图片描述0x100,0x200是自定义起名的地址,16进制。
    这就是利用函数的指针变量来交换数据的方法。

    展开全文
  • 实现交换数字 主要是理解指针类型如何传递 函数调用时怎样初始化两个变量指针 上代码(理解注释) #define _CRT_SECURE_NO_WARNINGS #include <stdio.h> #include <stdlib.h> #include<math.h> #...

    实现交换数字

    1. 主要是理解指针类型如何传递
    2. 函数调用时怎样初始化两个变量指针

    上代码(理解注释)

    #define _CRT_SECURE_NO_WARNINGS
    #include <stdio.h>
    #include <stdlib.h>
    #include<math.h>
    #include<time.h>
    #include<Windows.h>
    
    
    void change(int* x, int* y) {//不用返回,直接拿到int* 类型的i和j的地址赋给int*类型的x和y
    	int tmp = *x;//*为取x(i的地址)内的内容,就是直接用i进行操作,下同
    		*x = *y;
    		*y = tmp;//实现交换
    }
    int main()
    {
    	int i=10, j=20;
    	printf("init i = %d,j = %d\n",i,j);
    	change(&i, &j);//需要直接交换,必须取到他们的储存地址
    	printf("changed i = %d,j = %d",i,j);
    	system("pause");
    	return 0;
    }
    
    
    
    展开全文
  • 定义一个Swap函数中,通过传递指针实现主函数两个数的数值交换 代码如下: #include<stdio.h> void Swap(int *p,int *q) { int temp; temp=*p; *p=*q; *q=temp; } void main() { int a,b; printf("请...

    定义一个Swap函数中,通过传递指针实现主函数两个数的数值交换
    代码如下:

    #include<stdio.h>
    void Swap(int *p,int *q)
    {
    	int temp;
    	temp=*p;
    	*p=*q;
    	*q=temp;
    }
    void main()
    {
    	int a,b;
    	printf("请输入两个数:\n");
    	scanf("%d%d",&a,&b);
    	Swap(&a,&b);
    	printf("交换后的顺序为:%d %d\n",a,b);
    }
    

    注:

    要想通过指针实现地址传递,解引用,不能只是简单交换两个指针变量内的地址,必须通过访问符*,访问到指针所指向的地址,进而进行一系列操作。

    错误示范1:

    void Swap(int *p1,int *p2)
    {
    	int *temp;
    	temp=p1;
    	p1=p2;
    	p2=temp;
    }
    

    只进行了指针变量中内容的交换,并未交换指针所指向变量中的内容

    错误示范2:

    void Swap(int *p1,int *p2)
    {
    	int *temp;
    	*temp=*p1;
    	*p1=*p2;
    	*p2=*temp;
    }
    

    这里的指针变量temp由于未初始化,就变成了一个野指针
    野指针即 1)地址不存在 2)你没有权限访问
    在执行到*temp=*p1; 由于temp地址不存在或用户无权限访问造成整个程序崩溃

    所以在指针的应用中,一定记得先初始化指针

    展开全文
  • #include void Swap(int *x,int *y){ int temp;... } printf("\n交换后数组a为:"); for(i=0;i;i++){ printf("%d",a[i]); } printf("\n交换后数组b为:"); for(i=0;i;i++){ printf("%d",b[i]); } }
    #include <stdio.h> 
    
    void Swap(int *x,int *y){
    	int temp;
    	temp=*x;
    	*x=*y;
    	*y=temp;
    }
    
    main(void){
    	int a[3],b[3],i;
    	printf("\n请输入数组a:");
    	for(i=0;i<3;i++){
    		scanf("%d",&a[i]);
    	}
    	printf("\n数组a为:");
    	for(i=0;i<3;i++){
    		printf("%d",a[i]);
    	}
    	printf("\n请输入数组b:");
    	for(i=0;i<3;i++){
    		scanf("%d",&b[i]);
    	}
    	printf("\n数组b为:");
    	for(i=0;i<3;i++){
    		printf("%d",b[i]);
    	}
    	for(i=0;i<3;i++){
    		Swap(&a[i],&b[i]);
    	}
    	printf("\n交换后数组a为:");
    	for(i=0;i<3;i++){
    		printf("%d",a[i]);
    	}
    	printf("\n交换后数组b为:");
    	for(i=0;i<3;i++){
    		printf("%d",b[i]);
    	}
    }
    
    
    展开全文
  • 利用指针完成两个数字交换(c语言)

    万次阅读 多人点赞 2019-03-30 11:31:43
    初学指针:子函数如何才能影响父函数
  • 指针变量作为函数参数问题

    千次阅读 2017-10-30 00:01:37
    今天建哈夫曼树的时候发现指针变量作函数参数的问题,花了两个多小时,深刻反思! 插入元素到从小到大排序的单链表中,并保持链表的有序性,有两种做法: 一种是带头节点的单链表(很简单,不讨论) 另一种是不...
  • 深入理解C语言指针

    万次阅读 多人点赞 2019-09-28 08:36:51
    要知道指针的概念,要先了解变量在内存中如何存储的。在存储时,内存被分为一块一块的。每一块都有一个特有的编号。而这个编号可以暂时理解为指针,就像酒店的门牌号一样。 1.1、变量和地址 先写一段简单的代码: ...
  • 利用指针对两个数字进行排序

    千次阅读 2013-12-15 18:26:20
    /* * 程序的版权和版本声明部分 ... * All rightsreserved. * 文件名称: array.cpp * 作 者: 初瑞 ...* 完成日期: 2013年 12 月 15 日 ...* 问题描述:利用指针对两个数字进行排序 */ #include us
  • 指针实现数字a和数字b的互换

    千次阅读 2014-11-05 16:32:56
    上面的程序就完全可以实现数字 a 和数字 b 的互换功能的,但是为了深刻的理解指针的重要作用,我们要尝试利用指针实现数字 a 和数字 b 的互换功能。 首先来看下面的程序: void   swap _1 (int p, ...
  • 1. 指针变量也只是普通的变量很多C语言的初学者都将指针变量看的很神秘,实际上,就像其他的普通变量(比如int类型的),指针变量也是一种普通变量,他具有其他变量的一切特征。例如:int main(){int q=10;int *pi=0...
  • 一:创建变量实现交换 1.#include int main() { int a = 10; int b = 20; int c; printf("before change:a=%d b=%d\n",a,b); c = a; a = b; b = c; printf("after change:a=%d b=%d\n",a,b); return 0
  • 用函数实现两个数字内容的交换,你可能会这样做: void change_num(int a, int b) { int tmp = a; a = b; b = tmp; } 感觉太简单了阿,然后调用函数,大功告成 结果发现,,,emmm,不对啊 内容没有交换,瓦特?...
  • 方法一:运用数组元素间进行逻辑运算来实现交换 #include &amp;amp;lt;stdio.h&amp;amp;gt; #include &amp;amp;lt;stdlib.h&amp;amp;gt; int main(){ int i,j,k; int A[10]; int B[10]; ...
  • 今天看《C指针详解》(好像也有叫《深入理解c指针》的)的时候,看到一个有关类型转换的例子。 例十六:   第一眼看到这个例子的时候,我原本以为这个函数的功能是要将整型数字125进行倒置转换的,如125变作521,...
  • C++课后练习1:定义一个函数,交换两个数字,分别用指针和引用两种形式写
  • 交换两个变量的值,不使用第三个变量的四种法方

    千次阅读 多人点赞 2019-09-13 18:42:27
    交换两个变量的值,不使用第三个变量的四种法方 通常我们的做法是(尤其是在学习阶段):定义一个新的变量,借助它完成交换。代码如下: int a,b; a=10; b=15; int t; t=a; a=b; b=t; 这种算法易于理解,特别适合...
  • C++ 通过指针正确的交换两数值

    千次阅读 2016-08-25 19:36:04
    // 这样交换是可以实现两个数字交换的  假设主函数里定义两个变量 int = 5; int b = 7;  1、 那么调用exchange2函数的时候,变量a和变量b的地址就会传给exchange2函数中  2、 在调用函数后,形参*x和*y...
  • 关于用指针交换两个数

    千次阅读 2018-12-14 12:08:30
    关于用指针交换两个数 西邮Linux 兴趣小组又到了纳新季,作为一个...所以在这里总结一下关于用一级 二级指针交换两个数字的问题。 一级指针交换 #include&amp;lt;stdio.h&amp;gt; int swap(int *c , int *...
  • 使用指针的方式实现数组逆序

    万次阅读 2017-08-07 09:47:52
    在前面,我们通过让数组首位交换的方式,实现了数组的逆序,那,在学习了指针之后,我们该如何运用指针实现数组的逆序呢。 同样的,我们的思路还是使用首位对应交换的方式,只不过,在此时,我们可以选用指针代替...
  • 调用自定义交换函数swap(int *p1, int *p2),完成三个整数从小到大排列 Input 多组测试数据,每组输入三个任意整数 Output 输出从小到大排列的三个数 Sample Input 9 2 7 0 -2 12 8 3 1 Sample Output 2 7 9 -2 0 12...
  • C++基础入门(七)—— 指针

    千次阅读 2021-03-24 21:32:26
    1. 指针的基本概念2. 指针变量的定义和使用3....可以利用指针变量保存地址。 2. 指针变量的定义和使用   指针变量定义语法: 数据类型 * 变量名;   指针变量和普通变量的区别: 普通变量存放.
  • 【C语言】交换两个数的位置(指针)

    万次阅读 2018-11-20 14:51:41
    //指针--输入两个数,并交换两个数的位置 #include "stdio.h" int main() { //定义 int a,b,t,*p1,*p2; printf("Enter two integer Number:"); scanf("%d,%d",&a,&b); printf("...
  • C语言:使用函数实现两个数的交换

    万次阅读 多人点赞 2018-12-18 22:28:57
    使用函数实现两个数的交换 在之前的博客介绍了三种方法实现两个数的交换,这次是用函数来实现,想看基本...用函数实现两个数的交换,其本质上与基本的创建临时变量一样,只是把基本语句放在了函数里,然鹅要注意的...
  • C语言程序设计--交换两个变量的值

    千次阅读 2020-03-28 09:52:24
    C语言程序中,互换两个数字的值,依笔者的知识储备,可用以下三种方法; 1、 运用辅助变量 代码如下: #include <stdio.h> int main( void ) { int a = 1; int b = 2; int t; t = a; a = b; b = t; ...
  • 指针

    2013-06-20 16:41:28
     大家经常所说的指针就是地址,指针变量和其他变量最大的区别就是一个是从放基本类型的值(34/‘w’),而指针变量中存放的是所指向的那个变量的地址值:0x000018ef(十六进制)。  我们定义一个变量后会给这个变量...
  • C语言指针详解

    千次阅读 多人点赞 2014-10-26 08:37:01
    利用指针变量可以表示各种数据结构; 能很方便地使用数组和字符串; 并能象汇编语言一样处理内存地址,从而编出精练而高效的程序。指针极大地丰富了C语言的功能。 学习指针是学习C语言中最重要的一环, 能否正确...
  • c语言实现两数交换的三种方法

    千次阅读 2019-03-29 23:44:01
    方法一:利用第三个变量实现数值的交换 int tmp; tmp = a; a = b; b = tmp; 此方法直观,简易。不易出错,推荐使用 方法二:利用两个变量间的加减运算实现数值的交换 a=a+b; b=a-b; a=a-b; //a=a...
  • C 指针

    千次阅读 2020-01-30 21:59:42
    指针 ...如果一条语句里声明了多个指针变量就需要在每个指针变量名称前加* 可以用typedef关键字给指针类型起别名,别名可以用来声明指针变量 #include <stdio.h> //给指针类型起来一...
  • c语言指针详解

    千次阅读 2018-09-18 20:56:47
    利用指针变量可以表示各种数据结构; 能很方便地使用数组和字符串; 并能象汇编语言一样处理内存地址,从而编出精练而高效的程序。指针极大地丰富了C语言的功能。 学习指针是学习C语言中最重要的一环, 能否正确...

空空如也

空空如也

1 2 3 4 5 ... 20
收藏数 28,073
精华内容 11,229
关键字:

利用指针变量实现数字的交换