0
点赞
收藏
分享

微信扫一扫

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

#include <stdio.h>

void&nbsp;swap(int&nbsp;*px,&nbsp;int&nbsp;*py){
int&nbsp;temp&nbsp;=&nbsp;*px;
*px&nbsp;=&nbsp;*py;
*py&nbsp;=&nbsp;temp;
}&nbsp;

int&nbsp;main(void){
int&nbsp;num1,&nbsp;num2;

puts(&quot;请输入两个整数:&quot;);
printf(&quot;整数A:&quot;);
scanf(&quot;%d&quot;,&nbsp;&amp;num1);

printf(&quot;整数B:&quot;);
scanf(&quot;%d&quot;,&nbsp;&amp;num2);

swap(&amp;num1,&nbsp;&amp;num2);

puts(&quot;互换了两数的值。\n&quot;);
printf(&quot;整数A的值是%d。\n&quot;,&nbsp;num1);
printf(&quot;整数B的值是%d。\n&quot;,&nbsp;num2);

return&nbsp;0;
}

运行结果:
C语言 使用指针对两个变量的数值进行互换_#include

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&nbsp;swap(int&nbsp;*px,&nbsp;int&nbsp;*py){
int&nbsp;temp&nbsp;=&nbsp;*px;
*px&nbsp;=&nbsp;*py;
*py&nbsp;=&nbsp;temp;
}

int&nbsp;main(void){
double&nbsp;num1,&nbsp;num2;

puts(&quot;请输入两个实数。&quot;);
printf(&quot;实数A:&quot;);
scanf(&quot;%lf&quot;,&nbsp;&amp;num1);

printf(&quot;实数B:&quot;);
scanf(&quot;%lf&quot;,&nbsp;&amp;num2);

swap(&amp;num1,&nbsp;&amp;num2);

puts(&quot;互换了两数的值。\n&quot;);
printf(&quot;整数A的值是%f。\n&quot;,&nbsp;num1);
printf(&quot;整数B的值是%f。\n&quot;,&nbsp;num2);

return&nbsp;0;
}

运行结果:
C语言 使用指针对两个变量的数值进行互换_指针变量_02
因此,编译程序时,会显示警告信息,运行结果中显示的也不是正常的值。
C语言 使用指针对两个变量的数值进行互换_指针变量_03


举报

相关推荐

0 条评论