是否可以交换两个变量的地址?

2 c swap pointers

我知道可以像这样交换两个变量的值

#include <stdio.h>

void swap(int *x, int *y);
int main(){
    int x=5,y=10;
    swap(&x, &y);
    printf("x: %d, y: %d\n", x, y);
    return 0;
}

void swap(int *x, int *y){ 
    int temp;
    temp=*x;
    *x=*y;
    *y=temp;
}
Run Code Online (Sandbox Code Playgroud)

但是可以交换这两个变量的地址吗?我并不仅仅意味着只是指向它们然后交换指针所持有的值,我的意思是实际交换两个,这样在交换函数之后x的地址现在是交换函数之前的y的地址,反之亦然.

如果这是一个愚蠢的问题我很抱歉,但我很想知道这样的事情是否可能.如果这种行为不可能,为什么?

fuz*_*fuz 8

不,那是不可能的.您无法选择变量的地址,也无法修改它们.