函数调用时,调用者依次把参数压栈,然后调用函数,函数被调用以后,在堆栈中取得数据,并进行计算。函数计算结束以后,或者调用者、或者函数本身修改堆栈,使堆栈恢复原装。 在参数传递过程中需要解决两个问题:
- 当参数大于一个时,参数的入栈顺序如何,即:从右向左亦或是由右向左。
- 恢复堆栈的任务是由调用函数完成,还是被调用者负责。
熟读而精思,循序而渐进,厚积而薄发。
函数调用时,调用者依次把参数压栈,然后调用函数,函数被调用以后,在堆栈中取得数据,并进行计算。函数计算结束以后,或者调用者、或者函数本身修改堆栈,使堆栈恢复原装。 在参数传递过程中需要解决两个问题:
windows中的visual studio固然强大,但是对于平时测试用的小程序来说,建立一个工程毕竟是麻烦的。相对来说用g++在命令行下进行编译就方便多了(当然也可以用cl.exe),找到了这么一个工具,cygwin-b20,比较小巧实用。从这里下载。
安装及使用方法:
直接使用可执行文件full.exe进行安装,安装目录建议选择默认路径。安装完成后,将路径C:\cygnus\cygwin-b20\H-i586-cygwin32\bin加入的系统环境变量PATH中,这样,你可以在任何目录下执行bin/的命令,其中包含了169个较为常用的linux命令
使用优化选项编译:
1 | $ g++ test.cpp -o test -O2 |
此时的运行时间:
real 0m0.008s user 0m0.000s sys 0m0.004s |
so amazing!
g++有四个级别的优化选项,分别对应于 -O1, -O2, -O3, -O4.