交换两个整形变量的数值

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

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

 

posted on 2017-03-22 21:16  Kakyoin  阅读(195)  评论(0编辑  收藏  举报

导航