![](https://img-blog.csdnimg.cn/20201014180756930.png?x-oss-process=image/resize,m_fixed,h_64,w_64)
C语言
文章平均质量分 88
a_struggling_monkey
Do more
展开
-
函数的调用过程详解———栈帧的创建和销毁
●回顾内容:函数的定义:函数是一个程序中的部分代码,由一个或多个语句组成,它的功能是实现某些特定的任务。函数相对于其他代码来说具备相对的独立性。函数的调用:在某个函数内部,使用另一个函数来完成相关的任务,这个过程叫做函数调用。那么函数是如何调用的呢?分析一段简单的代码:#include<stdio.h>Add(int x,int y){ int z=0;...原创 2018-11-04 20:01:06 · 883 阅读 · 1 评论 -
程序的编译链接过程
我们所写的程序要形成一个可执行文件中间可是要经过复杂的过程的:1.组成一个程序的每个源文件通过编译过程分别转换成目标代码。2.每个目标文件由链接器捆绑在一起,形成一个单一而完整的可执行程序。3.链接器同时也会引入标准C函数库中任何被该程序所用到的函数,而且它可以搜索程序员个人的程序库,将其需要的函数也链 接到程序中。我们写好的源文件运行成为一个可执行程序的过程:....原创 2019-03-18 16:28:08 · 167 阅读 · 0 评论 -
图解结构体内存对齐
目录为什么要内存对齐?如何进行结构体对齐?如何让结构体按照指定的对齐参数进行对齐?如何知道结构体中某个成员相对于结构体起始位置的偏移量?为什么要内存对齐?1. 平台原因(移植原因): 不是所有的硬件平台都能访问任意地址上的任意数据的; 某些硬件平台只能在某些地址处取某些特定类型的数据,否则抛出硬件异常。2. 性能原因: 数据...原创 2019-04-14 19:05:51 · 459 阅读 · 0 评论 -
可变参数列表源码分析及函数设计
目录一、什么是可变参数?二、可变参数的实现三、可变参数源码四、模拟实现printf函数一、什么是可变参数? 可变参数是一个比较有意思的实现,通过将函数实现为可变参数的形式,可以使得函数可以接受1个以上的任意多个参数。 一般情况下,我们写的函数参数的数目是固定不变的,调用函数时要给出相应的实参,但有些时候,为了做同样的事情,由于参数个数不同,我们总...原创 2019-04-18 18:29:19 · 160 阅读 · 0 评论 -
模拟实现str系列和mem系列库函数
1.实现strcpy :拷贝字符串char* my_strcpy(char* dest, const char* src){ assert(dest); assert(src); char* ret = dest; while (*dest++ = *src++ !='\0') { ; } return ret;}注意:strcpy会将\0也拷贝,但是需要注意目标地...原创 2019-04-19 15:12:32 · 151 阅读 · 0 评论 -
指针数组 数组指针 函数指针 函数指针数组 指向函数指针数组的指针
指针数组和数组指针:指针数组:是一个数组,数组每个元素是一个指针,所占空间大小由数组决定。数组指针:是一个指针,指针指向一个数组,所占空间大小为4个字节(32位平台)。int *p1[5];//p1先和[ ]结合,因此p1是数组,只不过数组元素为 int * 型;int (*p2)[5];//p2先和“*”结合,因此p2是指针,只不过该指针指向 int 型数组。区分数组指针...原创 2019-04-19 16:51:50 · 156 阅读 · 0 评论