- 博客(3)
- 收藏
- 关注
原创 C和C++的区别
带有默认值的函数C89标准中,c语言没有带有默认值的参数,c99之后才有给函数默认值既可以在定义处,也可以在声明处,但只能给一次默认值第一次声明时给最右边的参数一个默认值,第二次声明时给左边参数一个默认值也是合法的(vs2008中合法,但是vs2017中是非法的)赋默认值必须从右向左依次赋值,在调用时,如果没有给实参,则把参数默认值压栈,也可以只传没有默认值的那个参数。使...
2018-07-27 23:32:31 8080
原创 c++函数调用堆栈的全过程
要理解函数调用堆栈的过程,首先要对汇编指令和寄存器有一定的了解。我们简单介绍几个:寄存器ebp:保存栈底指针的地址 esp:保存栈顶指针的地址 pc:存储下一行指令的地址 eax,ebx:保存变量的值汇编指令mov :移值 lea:移地址 rep stos 循环拷贝在进入一个函数的时候,系统首先会为主函数开辟一段栈帧空间,空间开辟的大小一般为十六进制的4c...
2018-07-24 14:39:39 1437 4
原创 C++:深入理解编译和链接过程
深入理解编译链接我们知道,用c/c++语言编写程序的时候,必须要经过编译和链接过程,才能将我们c/c++的源代码转化为可执行文件(Windows下是.exe程序,Linux下是elf格式的可执行文件)。那么编译和链接过程到底做了什么,这个可执行文件又是被加载到哪里运行的呢数据和指令无论用哪种语言所写的代码,归根结底会产生两种东西:指令和数据。那哪些代码是指令,哪些代码是数据?所...
2018-07-22 16:52:11 5518 5
空空如也
空空如也
TA创建的收藏夹 TA关注的收藏夹
TA关注的人