课程首页 › 第6部分 › 第84课
第84课 函数里的交换
函数里的交换(指针、指针与函数)
函数中两种不同的写法却带来了不一样的结果,这就是函数里交换的秘密,我们一起去探寻一番这其中的奥秘。有两个函数,一个改变了主函数中变量的值,另一个却改变不了,这是为什么呢?
函数中交换的秘密

运行程序:
程序分析
(1)swap(num1,num2)执行完成后为什么数字没有交换呢?因为这里仅仅是传入了num1和num2的值,只是将num1赋值给了x,将num2赋值给了y,接下来就是函数里的变量x和y的操作了,与主函数里的变量num1和num2无关了。

变量x和y属于形参变量,它们只有在函数被调用时才会分配内存,函数调用结束后随之被销毁,形参变量只有在函数内部有效,作用不到函数外部。
(2)swapAddress(&num1,&num2)则是将变量num1和num2的地址传递给了函数,然后在函数中通过地址操作了实际内存中的值,再对它们进行了交换。这其实是对匹配地址里的数据进行了交换,所以做到了实质性的修改。


所以最终交换的是变量num1和变量num2的值。
巩固练习
(1)仔细阅读以下程序,根据变量值的变化,正确的输出结果是()。

A.1 2
B.1 3
C.8 10
D.8 2
(2)阅读以下程序,仔细分析,都代表地址的一组选项是()。

A.p &a*p
B.p &*p &a
C.&p a &*a
D.&p &a
(3)阅读以下程序代码,填写程序的输出结果。

输出:_____________________________________________________________ _____