第二次作业

#include<stdio.h>
int main()
{
    void swap(int *p1,int *p2);
    int a,b;
    int *pointer_1,*pointer_2;
    scanf("%d%d",&a,&b);
    pointer_1=&a;    pointer_2=&b;
    swap(pointer_1,pointer_2);
    printf("%d,%d\n",a,b);
    
 } 
 void swap(int *p1,int *p2)
 {
     int m;
     m=*p1;
     *p1=*p2;
    *p2=m;
     
 }
9 5
5,9

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

  

#include<stdio.h>
int main()
{
    void swap(int *p1,int *p2);
    int a,b;
    int *pointer_1,*pointer_2;
    scanf("%d%d",&a,&b);
    pointer_1=&a;    pointer_2=&b;
    swap(pointer_1,pointer_2);
    printf("%d,%d\n",a,b);
    
 } 
 void swap(int *p1,int *p2)
 {
     int *m;
     *m=*p1;
     *p1=*p2;
    *p2=*m;
     
 }

 

 

 

总结:在*p1和*p2交换的过程中,要注意不可以写*m=*p1。因为*p1就是a,是整形变量。而*m是指针变量m所指向的变量。但m中并无确定的值,因此m所指向的单元也是不可预见的。所以,对*m赋值有可能给一个存储着重要数据的存储单元赋值,这样就会破坏系统的正常工作状况。

 

#include<stdio.h>
int main()
{
    void swap(int *p1,int *p2);
    int a,b;
    int *pointer_1,*pointer_2;
    scanf("%d%d",&a,&b);
    pointer_1=&a;    pointer_2=&b;
    swap(pointer_1,pointer_2);
    printf("%d,%d\n",a,b);
    
 } 
 void swap(int *p1,int *p2)
 {
     int *m;
     m=p1;
     p1=p2;
    p2=m;
     
 }

 

9 5
9 5

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

  总结:swap函数中两个数交换了值,但是主函数中没有交换。

posted on 2017-03-22 17:33  米粒呀  阅读(106)  评论(0编辑  收藏  举报

导航