关于内存指针的问题
更新日期:
文章目录
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;
}