交换两个整型变量的数值
Posted 李胡仪
tags:
篇首语:本文由小常识网(cha138.com)小编为大家整理,主要介绍了交换两个整型变量的数值相关的知识,希望对你有一定的参考价值。
#include<stdio.h> void swap(int *p,int *q) { int t; t=*p; *p=*q; *q=t; } main() { int a=5,b=4,*p,*q; p=&a; q=&b; swap(p,q); printf("a=%d b=%d",a,b); return 0; }
a=4 b=5
--------------------------------
Process exited after 0.0114 seconds with return value 0
请按任意键继续. . .
总结:
1,swap是用户定义的函数,它的作业是交换量(a和b)的值,它的形参p和q是指针变量。
2,程序运行时,先执行mian函数 ,输入a和b的值。然后将a和b的地址分别赋给指针变量p和p.
3,注:实参p和p是指针变量,在函数调用时,将实参变量的值传递给形参变量。
4,注:方法是交换a和b的值,而p和q的值不变。
二:void swap(int *p,int *q){int *m;*m=*p;*p=*q;*q=*m;}为何无法实现交换?
#include<stdio.h>
void swap(int *p,int *q)
{int *m;
*m=*p;
*p=*q;
*q=*m;
}
main()
{ int a=10,b=20,*x=&a,*y=&b;
swap(x,y);
printf("%d%d",a,b);
}
1.编译器显示发现错误,停止工作 。
2.定义的子函数void swap(int *p,int *q),参数为指针型,所以传递的值是地址,而不是值传递。
3.应该将地址传递到子函数中 传递 指针变量.
三、void swap(int *p,int *q){int *m;m=p;p=q;q=m;}为何无法实现?
#include<stdio.h> void swap(int *p,int *q) {int *m; m=p; p=q; q=m;} main() { int a=10,b=20,*x=&a,*y=&b; swap(x,y) printf("%d%d",a,b); }
10 20
10 20
--------------------------------
Process exited after 1.468 seconds with return value 0
请按任意键继续. . .
1. 程序正常编译并运行,但是并没有实现两个数交换!
2.在swap函数中交换了指针p,q的地址,但未将其所储存的值进行交换,所以参数的地址和值不变。
3. 因为执行值传递,所以形参值的改变不能使实参的值随之改变。
四.构建comp函数,实现两个整数比较,比较大的值通过返回值返回给main。要求comp的参数和返回值都是指针类型数据。
#include<stdio.h> int *comp(int *x,int *y) { return *x>*y? x:y; } int main() { int a,b,*p; scanf("%d,%d",&a,&b); p=comp(&a,&b); printf("max=%d\\n",*p); }
输入a,b的值:2,4
2 4
comp函数调用后输出较大的值:4
--------------------------------
Process exited after 3.205 seconds with return value 30
请按任意键继续. . .
1:通过指针的大小比较,决定指针参数,在main函数里调用。
总结:1:一些零碎的知识点还没有理解透彻;
2:编程时还有要点没有领悟。
以上是关于交换两个整型变量的数值的主要内容,如果未能解决你的问题,请参考以下文章