我试了一下
#include
#include
int main(void){
int *a,*b;
a = (int *)malloc(sizeof(int)*4);
b = (int *)malloc(sizeof(int)*3);
for(int i=0;i<4;i++){
a[i]=i+5;
}
for(int i=0;i<3;i++){
b[i]=3-i+5;
}
for(int i=0;i<4;i++){
printf("a[i]=%d\tb[i]=%d\n",a[i],b[i]);
}
int *tmp;
int a_adrr,b_adrr;
a_adrr=(int)a;
b_adrr=(int)b;
a_adrr^=b_adrr;
b_adrr^=a_adrr;
a_adrr^=b_adrr;
a=(int *)a_adrr;
b=(int *)b_adrr;
printf("after exchange\n");
for(int i=0;i<4;i++){
printf("a[i]=%d\tb[i]=%d\n",a[i],b[i]);
}
free(a);
free(b);
return 0;
}
t=p;
p=q;
q=t;