海贼19-8班现场课
9262人加入学习
(1人评价)
C语言程序设计(海贼现场课)
价格 ¥ 600.00
该课程属于 海贼19-8班(C++高薪班) 请加入后再学习

总结:

1、

【头文件和源文件之间,来回编写】

测试框架的整体编写过程,根据“声明放头文件,定义放源文件”的原则,在头文件和源文件之间,来回编写;特别地,例如创建数据结构(链表),需要创建新的头文件;

2、

【在测试框架中,数组和链表的作用差距体现在哪呢?】

数组的大小,在程序运行之前,就已经提前被确定下来了,例如大小为100的整型数组,大小为400的字符串,大小为800的浮点型数组等等;

而链表的节点数目是随着程序的运行而逐个逐个确定的。

链表,如果新增一个元素,新增一个节点;新增100个元素,新增100个节点。

因此,可以让测试用例的数目,不受到数组大小的限制。

3、

【让任意一个结构,附带链表性质】

我们可以让任意类型,拥有链表这个特性;也可以把不同类型的节点,穿成一串;

任何一个结构,不是链表形态,没关系;在最后一个字段放一个LinkNode即可。

马上可以支持链表操作,就像一个外骨骼一样。这是一个十分优美的设计!

4、

【计算偏移量和首地址】

在T类型中的int偏移量是多少?

首先将0(零)地址,转成T*地址

    再引用T*地址的Name字段

        再去取这个字段的地址

            再把地址强转long long————就是当前这个地址的偏移量。//64位操作系统的地址,就是long long类型,8字节;

代码如下:

#define offset(T, name) ((long long)(&(((T *)(0))->name)))                        

 

如何通过下一个节点的地址,去确定下一个结点的头地址?

先把p转成char *类型地址

    减去相关偏移量offset(T, name)

        再强转成T *类型————这就是下一个节点的首地址

#define Next(p, T, name)    ((T *)(((char *)p) - offset(T, name)));    

[展开全文]

授课教师

C++算法工程师
高级算法研发工程师

课程特色

文档(9)
视频(50)
图文(22)
下载资料(3)