结构体

2019-12-24

结构体是 C 语言主要的自定义类型方案,这篇就来认识一下结构体。

一、结构体的形态

C源程序(struct.c):

可变参数

2019-12-11

C语言的可变参数的实现非常巧妙:大师只用了 3 个宏就解决了这个难题。

一、可变参数的应用

这里实现一个简单的可变参数函数 sum:它将个数不定的多个整型参数求和后返回,其第 1 个参数指明了要相加的数的个数(va.c):

static变量及作用域控制

2019-11-20

一、static变量

static变量放在函数中,就只有这个函数能访问它;放在函数外就只有这个文件能访问它。下面我们看看两个函数中重名的static变量是怎么区别开来的。 (static.c):

<...
Read More

内联汇编

2019-11-02

内联汇编是指在 C/C++ 代码中嵌入的汇编代码,与全部是汇编的汇编源文件不同,它们被嵌入到 C/C++ 的大环境中。

一、gcc 内联汇编

gcc 内联汇编的格式如下:

谁调用了main?

2019-10-05

这是函数帧的应用之一。

操作可行性

从上一篇中可以发现:用帧指针 ebp 可以回溯到所有的函数帧,那么 main 函数帧之上的函数帧自然也是可以的;而帧中 旧ebp 的上一个四字节存的是函数的返回地址,由这个地址我们可以判断出谁调用了这个函数。

准备活动

下面就是这次黑客行...

Read More

奇怪的宏

2019-04-08

这一篇介绍这些奇怪的宏。

一、do while(0)

为了交换两个整型变量的值,前面值传递中已经用包含指针参数的 swap 函数做到了,这次用来实现(swap.c):