C语言函数实现的另类方法
原文:酷壳 – CoolShell · 陈皓 · 2011-01-26 · 12,559 人阅读
在前面看过那个BT的Javascript程序后,我们来看一个C语言的,相信大家还记得输出从1到1000的数最后的那个示例,本站还有很多这样的示例,如:变态的hello word,如何教新手编程,还有恐怖的C++,在下面这个示例面前,神马都是浮云。
下面这个示例向你展示了如何写一个swap()函数(把两个值交换),这段代码在我的Linux下的 gcc v4.1.1下可以正确编译通过,连一个Warning都没有,而且可以正确工作。我能说什么?!C语言并不疯狂,疯狂的是程序员。
其实,这种用字符串来实现函数的方法,在原理上是很好理解的。
字符串就是一段内存空间,把一个字符串指针强转成函数指针,那么这个指针所指向的内容就是各种指令,因此,那堆乱七八糟的东西说白了就是汇编。8086的汇编。你可以使用ndisasm来看看。
注意:这段汇编中使用了XOR而不是引入第三个变量来完成了变量值的交换。
关于XOR的方式,参看下面的示例:
或者更为简单的:
a^=b^=a^=b;
(全文完)
(转载本站文章请注明作者和出处 酷 壳 – CoolShell ,请勿用于任何商业用途)
转载请注明作者和出处:酷壳 – CoolShell。本文仅供学习,请勿用于商业用途。
