同步阅读进度,多语言翻译,过滤屏幕蓝光,评论分享,更多完整功能,更好读书体验,试试 阅读 ‧ 电子书库
9.6 改变调用函数中的变量
有时我们需要用一个函数改变另一个函数中的变量。例如,排序问题的一个常见任务是交换两个变量的数值。假设要交换两个变量x和y的数值:
上面这段简单的代码并不能实现这个功能,因为当执行第二行时,x的原数值已经被y的原数值所代替。这就需要另外一行语句对x的原数值进行存储。
现在这段代码就可以实现数值交换的功能,可以将其编写成函数并构造一个驱动程序进行测试。在程序清单9.13中,为了清楚地表明某变量属于函数main()还是属于函数interchange(),前者使用了变量x和y,而后者使用的是u和v。
程序清单9.13 swap1.c程序程序的运行结果如下:
令人吃惊的是数值并没有发生交换。下面我们在interchange()中加入一些打印语句来检查错误(请参见程序清单9.14)。
新的输出结果是:
函数interchange()并没有错误,u和v的数值确实得到了交换。问题出现在把执行结果传递给main()的时候。正如已指出的那样,interchange()使用的变量独立于函数main(),因此交换u和v的数值对x和y的数值没有任何影响!使用return语句可以吗?可以在interchange()的结尾处加入下面一行语句:
然后改变main()中对该函数的调用方式:
做了上述更改后,x被赋予了新值,而y的数值并没有改变。因为return语句只能把一个数值传递给调用函数,但现在我们需要传递两个数值。这并非不能实现!只需用指针就可以了。
请支持我们,让我们可以支付服务器费用。
使用微信支付打赏