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

标签 c pointers swap

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

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

但是可以交换这两个变量的地址吗?我的意思不是仅仅创建一个指向它们的指针然后交换指针所持有的值,我的意思是实际交换两者,以便在交换函数之后 x 的地址现在是交换函数之前 y 的地址和反之亦然。

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

最佳答案

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

关于c - 是否可以交换两个变量的地址?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/27458825/

相关文章:

c - 使用套接字 API 在 C 中转发 UDP 数据包

c++ - 重新分配已存储在目标变量中的一个值是否会导致重写和更长的运行时间?

c++ - 如何编写指向函数的函数指针,返回指向函数的函数指针?

c++ - 如何修复编译错误 "This function or variable may be unsafe"(strcpy)

javascript - 如何使用 onclick 交换两个元素的位置,包括它们的类/id?

c - Windows EXE 可以作为服务或应用程序运行。如何确定它是否作为服务运行?

java - 如何在我的主类中使用 SWIGTYPE_p_CHAR 类?

c++ - 来自 cudaGetErrorString(err) 的未知错误

java - 如何交换两个节点及其在单链表中的内容?

android 在单击图像按钮时使用动画交换两个 View