学习链表这么长时间了,趁着今晚有时间,感觉总结一下,这次真感觉跟着驰哥学习了不少的东西,对于这次链表,终于有了真正意思上写C语言的感觉吧,虽然买了C语言的接口与实现,不过现在没时间看,等链表这一块完全学习完在看吧。C语言也可以写的很漂亮的,组件化思想,也就是模块化,写一个东西就在里面套、套、套模块,有点像玩积木的感觉。不过开始写链表之前,先来一篇这个东西tools,简单说就是写一个工具,方便其他文件的调用,因为这次我在Centos6.5下gcc代码的时候遇到了问题。for example 在C语言中没有bool值,于是自己定义呗,在不同的文件中都定义 typedef unsigned char Boolean;就会出错,报错为Boolean重定义,但是在redhat7.0下却没有这样的错误。起始这个东西写在tools.h文件中,用的时候直接调用tools.h,也就不用自己在写了。还有我们经常用到的宏定义,都可以写在里面去,来看看代码吧!
这个是tools.h文件
#ifndef _TOOLS_H_
#define _TOOLS_H_
#include <stdio.h>
#include <stdlib.h>
#include <string.h>
#define TRUE (1)
#define FALSE (0)
#define ZERO (0)
#define ONLY_ONE (1)
#define ERROR (-1)
// 定义也就是像C++中的bool类型
typedef unsigned char Boolean;
//工具类接口
void *Malloc(size_t size); //申请内存的包裹函数
void swap(void *a, void *b, int length);// 实现交换 memcpy内存的拷贝
#endif
这个是tools.c文件
#include "tools.h"
//申请内存的包裹函数
void *Malloc(size_t size)
{
void *result = malloc(size);
if(result == NULL){
fprintf(stderr, "the memory is full!\n");
exit(1);
}
return result;
}
// 实现交换 memcpy内存的拷贝
void swap(void *a, void *b, int length)
{
void *temp = Malloc(length);
memcpy(temp, a, length);
memcpy(a, b, length);
memcpy(b, temp, length);
free(temp);
}
包裹函数用起来还不错,省去很多重复的代码,就上面的malloc,下次就用Malloc,对于出错的话,也就写一回,是不是很方便啊。赶紧写自己的tools吧