交换两个整形变量的数值
Posted Kakyoin
tags:
篇首语:本文由小常识网(cha138.com)小编为大家整理,主要介绍了交换两个整形变量的数值相关的知识,希望对你有一定的参考价值。
#include<stdio.h> int swap(int *p,int *q) { int t; t=*p;*p=*q;*q=t; } int main() { int a=2,b=3; int *p;int *q; p=&a;q=&b; printf("a=%d,b=%d\\n",a,b); swap(p,q); printf("*p=%d,*q=%d\\n",*p,*q); }
总结:声明函数时出现错误,加了函数变量的数据类型后解决了问题。
________________________________________________________________________________________________________________________________________________________________________________________
void swap(int *p,int *q){int *m;*m=*p;*p=*q;*q=*m;}为何无法实现交换?
*m是在函数中定义的变量,没有指向一个具体的地址,*m=*p进行的是调用不确定的值与*p进行交换,显然是错误的。
________________________________________________________________________________________________________________________________________________________________________________________
void swap(int *p,int *q){int *m;m=p;p=q;q=m;}为何无法实现交换?
在swap函数内 ,只交换了p和q的地址,而p和q中所储存的值并没有交换,所以该函数无法实现交换。
________________________________________________________________________________________________________________________________________________________________________________________
#include<stdio.h> int comp(int *p,int *q) { if(*p>*q) return *p; else return *q; } int main() { int a=2,b=3; int *p;int *q; p=&a;q=&b; comp(p,q); printf("a和b中较大的是:%d\\n",comp(p,q)); }
总结:比较两个变量的函数需要将指向变量的指针输进函数中;指针型变量只能指向一个地址,本身无法存储一个值。
以上是关于交换两个整形变量的数值的主要内容,如果未能解决你的问题,请参考以下文章