扬声器1:原来我们可以 成功交换两个值 通过它们传递到一个变量 功能不是通过值或副本,但 通过引用或通过他们的地址。 换句话说,我们需要利用 一些被称为一个指针。 一个指针,真的,仅仅是 一些变量的地址。 所以,如果我们提供了一个调用的函数, 比如,换用的地址 一个变量和另一个地址 变量,交换应有权 去每个这些地址的 而真正改变 值的存在。 让我们来看看这方面。 让我们重新实现交换,如下所示。 首先,让我们改变不会是一个int 但要成为一个指向int或 一个int的地址。 然后让我们做相同的B,改变 它从一个int是一个指向 int或int的地址。 然后掉在里面,让我们仍然 声明tmp目录,让我们有一个 临时场所的价值。 但一个的值不是本身,因为 再次,一个是现在的地址 一些诠释。 因此,如果我们想要去的地址和 得到诠释在该地址,我们有 解引用这个指针,还按以下方式 明星接线员,写作明星。 接下来,我不想改变 a的值。 我想改变的值 一,牢记,再一次, a是一个地址。 因此,要做到这一点,我需要再次 要说明星得到。 现在我想提出的价值 那是在B,不是b的值,这 也就是一个地址。 所以,我再次说,星级住宿。 然后在我的最后一行,我需要 覆盖是什么地址b与 什么是在原来的位置。 要做到这一点,我做星级的住宿变得tmp目录。 现在在一天结束时,这 功能还只是 三行代码。 但因为它的操纵值 由它们的地址的方式,而不是 被传递到的原始值 功能,我声称,交换是目前 有权改变值 通过其地址传递。 但我需要一个改变仍然。 我再也不能在传递 x和y本身。 我需要通过在地址 的x和y。 而要做到这一点,我需要一些轻微 不同的符号往上顶。 我希望通过传递交换x和y x的地址,由表示 与符号X和地址 Y,用符号y指示。 同样,往上顶现在,我需要 改变函数的原型 匹配我所做的改变,使 一个是,再次,一个指向int的指针。 b为,同样,一个指向int的指针。 现在我可以挽救我的文件。 并让我们重新编译并运行它。 做掉点斜线交换。 并且此时,x和y是确实现在 交换使得它们的值不 1和2,但2和1。