当前位置:   article > 正文

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

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;
}
  • 1
  • 2
  • 3
  • 4
  • 5
  • 6
  • 7
  • 8
  • 9
  • 10
  • 11
  • 12
  • 13
  • 14
  • 15
  • 16
  • 17
  • 18
  • 19
  • 20
  • 21
  • 22
  • 23
  • 24
  • 25
  • 26

运行结果:
在这里插入图片描述

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;
}
  • 1
  • 2
  • 3
  • 4
  • 5
  • 6
  • 7
  • 8
  • 9
  • 10
  • 11
  • 12
  • 13
  • 14
  • 15
  • 16
  • 17
  • 18
  • 19
  • 20
  • 21
  • 22
  • 23
  • 24
  • 25
  • 26

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

声明:本文内容由网友自发贡献,不代表【wpsshop博客】立场,版权归原作者所有,本站不承担相应法律责任。如您发现有侵权的内容,请联系我们。转载请注明出处:https://www.wpsshop.cn/w/数据结构灵魂/article/detail/63041
推荐阅读
相关标签
  

闽ICP备14008679号