#include<stdio.h>
#include<conio.h>
main()
{
void swap(int *p1,int *p2);//定义一个函数作用是交换两个整型变量的数值
int x,y;//定义整型变量x,y
int *a1,*a2;//定义整型指针a1,a2
printf("任意输入两个数值:");
scanf("%d,%d",&x,&y);//任意输入两个数值赋值到x,y中
a1=&x;
a2=&y;
swap(a1,a2);//交换 a1,a2
printf("%d,%d",*a1,*a2);
getch();
return 0;
}
void swap(int *p1,int *p2)//调用swap交换函数,交换两个变量的值
{
int p;
p=*p1;
*p1=*p2;
*p2=p;
}

我认为本题的重点是在于对*p及p的理解。  *p是指针,作用是存放变量的地址而p是地址所储存的内容。 关键是子函数调用时交换的应用,注意是变量值的交换不是指针指向问题。

输出结果  任意输入两个数值:1,2
         2,1

void swap(int *p1,int *p2)
{
int *p;
*p=*p1;//此语句有问题
*p1=*p2;
*p2=*p;
}

*p1就是x,是整型变量。而*p是指针变量p所指向的变量。但p中并无确定的地址值,它的值不可预见。*p所指向的单元也不可预见。

因此对*p赋值可能会破坏系统的正常工作状况。

void swap(int *p1,int *p2)
{
int *p;
p=p1;
p1=p2;
p2=p;
}

C语言中实参和形参之间的数据传递是单向的“值传递方式",指针变量作为函数参数也要遵循这个规则。调用函数不可能改变实参指针变量的值,但是可以改变实参指针变量所指变量的值。

#include<stdio.h>
int comp(int*x,int*y)
{if(*x>*y) return *x;elsereturn *y;
}
int main()
{int x,y,*p1,*p2;
scanf("%d,%d",&x,&y);
p1=&x;
p2=&y;
printf("max=%d\n",comp(p1,p2));
return 0;
}

1,2
max=2

--------------------------------
Process exited after 13.7 seconds with return value 0
请按任意键继续. . .

 

转载于:https://www.cnblogs.com/xBryant/p/6601576.html

交换两个整型变量的数值相关推荐

  1. 交换两个整型变量的三种方法

    在学习C语言的过程中,我们都会遇到的一个题目就是:交换两个整型的变量:今天我将讲解三种方法供大家开拓视野!!! 法一: 新建一个整型变量c,假设我们要交换a b两个整型变量的值,我们先把a变量的内容存 ...

  2. 关于交换两个整型变量值的几种方法

    // 有以下两个变量 a,b,需求对其中进行交换值,使 a = 2,b = 1int a = 1; int b = 2; 通过第三个变量交换 int c = a; // c = 1 a = b; // ...

  3. C语言函数实现交换两个整型变量

    #define _CRT_SECURE_NO_WARNINGS 1 #include<stdio.h> #include<string.h> void Swap(int* pa ...

  4. C语言位操作--不用中间变量交换两数值

    1.使用加法与减法交换两数值: #define SWAP(a, b) ((&(a) == &(b)) || \(((a) -= (b)), ((b) += (a)), ((a) = ( ...

  5. 编程技巧:使用异或操作符(XOR)交换两数值

    异或(exclusive OR)作为4种逻辑操作符之一,相对其他3种(OR/AND/NOT)来说,出场的次数非常少,是因为在日常开发中能用到它的场景本来就不多.对笔者来说,目前接触到场景只有交换两个数 ...

  6. 【Java语言】交换两个数的数值

    package com.njwbhz.path;public class Test18 {/*** @author FairyKunKun* @since 2022/2/16*/public stat ...

  7. 【小家java】交换两个变量数值的方法(四种方法)

    相关阅读 [小家java]java5新特性(简述十大新特性) 重要一跃 [小家java]java6新特性(简述十大新特性) 鸡肋升级 [小家java]java7新特性(简述八大新特性) 不温不火 [小 ...

  8. java 两个值对换_java将两个整型变量值进行互换的几种实现方法

    在很多时候,我们会使用到将两个整型变量值进行互换,比如冒泡排序,通过判断来将数组变量的值逐步交换,那么怎么交换值才能最有效最节省空间呢? 首先,我们会想到的,用一个零时变量来做中间的过度存储空间,这是 ...

  9. 【剑指offer】不使用新变量,交换两个变量的值,C++实现

    # 题目 不使用新变量,交换两个变量的值. # 思路 方法一:使用加减法操作,交换两个变量的值. A = A+B B = A-B A = A-B 方法二:使用异或运算,交换两个变量的值 A = A^B ...

最新文章

  1. apache压力测试工具ab
  2. python求13号是星期几的次数_Python简单计算给定某一年的某一天是星期几示例
  3. 【转】从Mac/OS和iOS开放源码浅谈UNIX家谱
  4. romfs, cramfs和ramdisk
  5. python ftp上传_Python FTP传输的简单示例
  6. 一步一步部署GlusterFS
  7. git reset和revert的区别
  8. 萤石云枪机球机云台接入控制实战-含源码-layui
  9. 《麦肯锡精英的谈判策略》 -豆瓣评分8.2
  10. android文件删除工具下载,Coolmuster Android Cleaner下载
  11. 用excel解蓝桥杯(2018年第九届蓝桥杯A组)
  12. 加快BITMAP像素访问速度,取代GetPixel
  13. 支付宝服务商条码付,直接打款给签约子商户方法
  14. 腾讯首次攻破屏下指纹识别技术;苹果新Mac Pro最贵将卖到4.2万;Haxe 4.0发布 | 极客头条...
  15. 如何在 Excel 表格中查找数据
  16. W3C标准英文文献翻译方案
  17. vjudge_contest15
  18. html图片视频渲染原理,初识浏览器渲染原理和CSS动画
  19. cadence SPB17.4 - allegro - Allegro2Altium.bat 初探
  20. 曙光服务器如何重新设置u盘启动_曙光服务器u盘安装linux系统

热门文章

  1. 装逼的翻译,害死多少人,你同意吗?到底什么是非终止状态,终止状态
  2. Eclipse RCP使用SWT.EMBEDDED方式显示batik的svgCanvas后窗口最大化变白问题
  3. 8天玩转并行开发——第五天 同步机制(下)
  4. AutoCAD .net 二次开发官方教程及源码C#版(4)-(源码下载)
  5. dspmq dspmqver command not found(dspmq命令找不到,dspmqver主安装目录设置不正确
  6. 设计行业的新宠——云渲染
  7. shiro使用jdbc_realm登录验证
  8. 〖Linux〗穿越城墙之后,直接连接国内网站的路由配置
  9. 多域资源整合之基础准备--DNS配置
  10. 33--二维数组中的查找