文章目录
  1. 1. 1.关于两个数互换问题

1.关于两个数互换问题

以下方法方法能否交换两个数成功?为什么?

int m=1;
int n=2;
swipe(&m, &n);
printf(“————->:%d—————->%d”, m,n);

void swipe(int *p1,int *p2){
    printf("\n---swipe----sizeof:%lu", sizeof(char));
    int  *nTemp;//   int nTemp=0;
    int *p=nTemp;// int *p=&nTemp;
    *p = *p1;
    *p1 = *p2;
    *p2 =*p;
}

答案:不能交换两个数,nTemp没有分配内存。正确的做法如下:

第一种做法:

void swipe(int *p1,int *p2){
printf("\n---swipe----sizeof:%lu", sizeof(char));
int  nTemp=0;
int *p=&nTemp;
*p = *p1;
*p1 = *p2;
*p2 =*p;
}

第二种做法:

void swipe(int *p1,int *p2){
printf("\n---swipe----sizeof:%lu", sizeof(char));
int   nTemp=(int *)malloc(sizeof(int));
int *p=&nTemp;
*p = *p1;
*p1 = *p2;
*p2 =*p;
}
文章目录
  1. 1. 1.关于两个数互换问题
Fork me on GitHub