#include <stdio.h>void swap(int *px, int *py){int temp = *px;*px = *py;*py = temp;
} int main(void){int num1, num2;puts("请输入两个整数:");printf("整数A:");scanf("%d", &num1);printf("整数B:");scanf("%d", &num2);swap(&num1, &num2);puts("互换了两数的值。\n");printf("整数A的值是%d。\n", num1);printf("整数B的值是%d。\n", num2);return 0;
}

运行结果:

swap函数中,形参px 和 py 被声明为“指向int型变量的指针变量”。函数被调用时,将&num1 和 &num2复制到 px 和 py中,指针 px 便指向了 num1 ,指针py 便指向了 num2。由于在指针前面加上指针运算符 *,就可以显示该指针指向的对象,因此 *px是num1的别名,*py是num2的别名。

scanf函数与printf函数不同,在使用scanf函数进行读取时,变量名前必须加上一个特殊符号&。
scanf函数的使命是为主调函数中定义的对象保存值。倘若它接收到的纯粹是变量的“值”,是无法进行保存的。因此,scanf函数接收的是指针(具有地址的“值”),由该指针所指对象保存从标准输入读到的值。


swap函数的功能是将两个int型整数进行互换,而传入的却是指向double型变量的指针。
指针px指向了 double 型变量的 num1,但是 int 型的 *px 却不能等同于 double 型变量的 num1。

#include <stdio.h>void swap(int *px, int *py){int temp = *px;*px = *py;*py = temp;
}int main(void){double num1, num2;puts("请输入两个实数。");printf("实数A:");scanf("%lf", &num1);printf("实数B:");scanf("%lf", &num2);swap(&num1, &num2);puts("互换了两数的值。\n");printf("整数A的值是%f。\n", num1);printf("整数B的值是%f。\n", num2);return 0;
}

运行结果:

因此,编译程序时,会显示警告信息,运行结果中显示的也不是正常的值。

C语言 使用指针对两个变量的数值进行互换相关推荐

  1. C语言的指针符号到底靠近变量类型还是变量名?

    今天在复习数据结构时,C语言实现线性表用到了指针,对指针符号的位置存疑,遂查询了一下: 在C语言中只要使用指针,必然用到* 运算符.然后经常会看到不同的书中*有靠近变量类型的,有靠近变量名称的,很迷惑 ...

  2. c语言作用域有哪两种变量,2017年计算机二级C语言字考点归纳:变量的存储类别、作用域及生存期...

    7.7 变量的存储类别.作用域及生存期 1.变量的存储类别 在C语言中,有两类存储类别:自动类别及静态类别. 有4个与两种存储类别有关的说明符:auto(自动).register(寄存器).stati ...

  3. C语言 使用指针计算两个整数的和与差

    #include <stdio.h>void sum_diff(int num1, int num2, int *sum, int *diff){*sum = num1 + num2;*d ...

  4. C语言通过指针交换两个数

    #include<stdio.h> void swap1(int *p1,int *p2){//p1,p2分别对应a,b的地址,*p1和*p2分别对应a和b的值 int p;//p是一个变 ...

  5. 使用指针交换两个变量的值

    指针 概念 指针指向变量的地址,一般时首个字节的地址 指针实际上是一个unsigned的整数 指针变量 int* P = &a; 星号只是类型的一部分,不是变量名的一部分 星号(*)还可以是取 ...

  6. 用指针交换两个变量的值

    两个数的值进行交换 首先错误交换姿势: 因为形参是实参的副本(拷贝),它们只是值相同, 形参和实参都有各自的地址,所以对形参这个"假身"进行操作 实参的值是不会改变的 #inclu ...

  7. C语言用指针求两个矩阵的差,求破C语言用指针和函数求转置矩阵

    int a[5][5], 可以拆开来写就比较容易理解 int *a[5]; // 宣告了五个int的指针 int a0[5], a1[5], a2[5], a3[5], a4[5]; // 宣告了五个 ...

  8. c语言的指针和java_C语言指针变量的定义和使用(精华)

    数据在内存中的地址也称为指针,如果一个变量存储了一份数据的指针,我们就称它为指针变量. 在C语言中,允许用一个变量来存放指针,这种变量称为指针变量.指针变量的值就是某份数据的地址,这样的一份数据可以是 ...

  9. C语言字符变量输出值,C语言,交换任意两个字符型变量的值并输出结果。要求:利用getchar和putchar函数。...

    C语言,交换任意两个字符型变量的值并输出结果.要求:利用getchar和putchar函数.以下文字资料是由(历史新知网www.lishixinzhi.com)小编为大家搜集整理后发布的内容,让我们赶 ...

最新文章

  1. 谷歌AI专家爆料:90%的人都不知道,写不出好代码,是输在了这点上!
  2. winform 监听http_Winform HttpListener监听有关问题
  3. 最小错误率贝叶斯决策
  4. 闪屏,default
  5. 局域网一点通之组网、管网、用网1000问
  6. 超 8 成软件存已知高危开源漏洞,奇安信发布《2021 中国软件供应链安全分析报告》
  7. 任何字符串都可以作为c语言的标识符,2013年软考程序员模拟试题及答案解析一...
  8. @RequestParam接收解析不到 POST 提交的 数据
  9. 《Hadoop实战(第2版)》迷你书
  10. VAssistX + VS2017 常用快捷键
  11. 干细胞相关研究最新进展(2021年9月)
  12. 结构化数据与非结构化数据有什么区别?
  13. BOC保护的色氨酸锌卟啉(Zn·TAPP-Trp-BOC)/铜卟啉(Cu·TAPP-Trp-BOC)/钴卟啉(钴·TAPP-Trp-BOC)/铁卟啉(Fe·TAPP-Trp-BOC)/齐岳供应
  14. html5调用腾讯视频,小程序h5获取腾讯视频的真实mp4地址video!【前端+后端方法】...
  15. SDH原理--2.SDH信号的帧结构
  16. jquery+ajx post/get 实例
  17. 编程王 kingofcoders.com
  18. Alexa Echo智能家居接入
  19. 兼容IE8的旋转角度
  20. 为什么visio输出图片俩边有留白_解决LaTex中插入Visio画图有多余边框的问题

热门文章

  1. Android WebView 与 JS 交互
  2. 通过/proc/sys/net/ipv4/优化Linux下网络性能
  3. cmd 控制台 提示:请求的操作须要提升!
  4. Android开发必看知识,不看后悔
  5. 分享HTML5 canvas 的总结
  6. 有关session的登录注销的一个小例子
  7. javascript学习之流程控制
  8. CSS3实践之路(六):CSS3的过渡效果(transition)与动画(animation)
  9. HTML5实例教程:OL标签的start属性和reversed属性
  10. 求解最大字段和的几种方法