交换两个整形变量的数值

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

总结:比较两个变量的函数需要将指向变量的指针输进函数中;指针型变量只能指向一个地址,本身无法存储一个值。

 

以上是关于交换两个整形变量的数值的主要内容,如果未能解决你的问题,请参考以下文章

交换两个整形变量的数值

交换两个整形变量的数值

第二次作业——交换两个整形变量的数值

交换两个整形变量

不借助任何中间变量将两个整形变量的值交换

c#写一个方法交换两个整数变量的值