用swap函数交换两个整数

#include<stdio.h>  //头文件 
main() //主函数 
{
    void swap(int *p,int *q);  //声明 
    int a,b;   //定义两个整数 
    int *p1,*p2;   //  定义两个地址 
    scanf("%d,%d",&a,&b);  //输入两个整数 
    p1=&a;   //p1指向a
    p2=&b;   // p2指向 b 
    swap(p1,p2);  //交换p1和p2 
    printf("%d,%d\n",a,b);  //输出a,b的值 
}
void swap(int *p,int *q)  //调用函数 
{
    int k;  //定义一个整数 
    k=*p;   // 将*p的值赋给k 
    *p=*q;  //将*q的值赋给*p 
    *q=k;  //将k的值赋给*q 
}

 

1,2
2,1

--------------------------------
Process exited after 14.19 seconds with return value 0
请按任意键继续. . .

 总结:swap函数用的不熟练,定义函数时总出错。

#include<stdio.h>

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

在swap函数中只是对指针变量中的地址进行调换(&p和&q交换),而并没有影响到a,b的值。

#include<stdio.h>
int main()
{int p1,p2;//定义整型
int*p,*q,*c;//定义指针
p=&p1;//p指向i
q=&p2;//q指向j
int*swap(int*a,int*b);//定义函数指针 ,让函数返回指针类型数据 
scanf("%d,%d",p,q);
c=swap(p,q);//将函数的返回值赋值给指针变量c 
printf("%d",*c);
return 0; 
 } 
 int*swap(int*a,int*b)
 {if(*a<*b)
 return b;//返回指针变量 
 else
 return a;
 }
1,2
2
--------------------------------
Process exited after 3.378 seconds with return value 0
请按任意键继续. . .

 总结:指针运用是需要注意何时用&,注意将p指向i和q指向j。

posted @ 2017-03-22 19:16  SeanBiidan  阅读(5893)  评论(0编辑  收藏  举报