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

#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;
}

运行结果:
在这里插入图片描述
因此,编译程序时,会显示警告信息,运行结果中显示的也不是正常的值。
在这里插入图片描述

  • 4
    点赞
  • 12
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值