关于C语言指针函数的问题

2025-05-13 14:35:52
推荐回答(2个)
回答1:

我试了一下

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

回答2:

t=p;
p=q;
q=t;