交换指针时的困惑

标签 c

在 Dennis M Richies 的书《C 编程语言》中,它谈到了指针,其中一个例子是交换两个指针:

void swap(int *a, int *b)
{
    int temp;
    temp = *a;
    *a = *b;
    *b = temp
}

让我有点困惑的是*a = *b。如果b已经是传入的指针,为什么在将其分配给*a之前需要取消引用?为什么 a = b 不能像它们的两个指针一样工作?

最佳答案

a = b意味着您正在分配地址 ba这不是正确的方法。

交换两个数字意味着你需要得到 value at that address并且您必须交换该值。
所以正确的方法是 *a = *b;即地址 b 处的值分配给地址 a 处的值.

关于交换指针时的困惑,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/29912848/

相关文章:

c - tolower() 和 toupper() 不起作用

c++ - 顺序读取大文件

c++ - 恢复 OpenGL 状态

使用B+树创建索引文件

c - 如何在c中找到给定程序的时间复杂度

另一个 header 中的 C++ 结构函数给出 "missing type specifier"

c - 使用信号量的程序在 Linux 上运行良好...在 Mac osX 上出现意外结果

c++ - 对象的性能影响

c - C 有像 Java 那样的垃圾收集器吗?

c - 联盟重复成员