- 博客(3)
- 收藏
- 关注
原创 栈帧---函数调用原理
下面我通过一个简单的实例来分析函数调用原理------栈帧 首先应该明白,栈是从高地址向低地址延伸的。每个函数的每次调用,都有它自己独立的一个栈帧,这个栈帧中维持着所需要的各种信息。 寄存器ebp指向当前的栈帧的底部(高地址) 寄存器esp指向当前的栈帧的顶部(地址地) 函数调用过程如下: (1)先将调用者main()函数的堆栈的基址(ebp)入栈,以保存之前任务的信息。 (2)然后将调用者main()函数的栈顶指针(esp)的值赋给ebp,作为新的基址(即被调用者函数fun()的栈底)。 (3)然后在这个
2016-12-23 23:27:16 6027
转载 strcpy和memcpy的区别
strcpy和memcpy都是标准C库函数,它们有下面的特点。 strcpy提供了字符串的复制。即strcpy只用于字符串复制,并且它不仅复制字符串内容之外,还会复制字符串的结束符。 已知strcpy函数的原型是:char* strcpy(char* dest, constchar* src); memcpy提供了一般内存的复制。即memcpy对于需要复制的内容没有限制,因此用途更广。
2016-12-11 15:53:32 267
原创 宏和函数有什么区别?
()#define)宏可以频繁的用于执行简单的计算。但一般是宏的代码很短,才使用宏,否则使用宏会使程序长度大幅度提升。 函数可以写一些复杂的的计算。 比如下面这个比较大小的两个数字的大小 #include #include #define MAX(a,b) ((a)>(b)?(a):(b)) int main() { printf("%d\n", MAX(3,5)); system(
2016-12-04 16:52:54 981
空空如也
空空如也
TA创建的收藏夹 TA关注的收藏夹
TA关注的人