资源简介
自己动手写编译器、链接器 (随书源码)
代码片段和文件信息
// 《自己动手写编译器、链接器》配套源代码
#include “scc.h“
/***********************************************************
* 功能: 重新分配动态数组容量
* parr: 动态数组指针
* new_size: 动态数组最新元素个数
**********************************************************/
void dynarray_realloc(DynArray *parr int new_size)
{
int capacity;
void *data;
capacity = parr->capacity;
while (capacity < new_size)
capacity = capacity * 2;
data = realloc(parr->data capacity);
if (!data)
error(“内存分配失败“);
parr->capacity = capacity;
parr->data = data;
}
/***********************************************************
* 功能: 追加动态数组元素
* parr: 动态数组指针
* data: 所要追加的新元素
**********************************************************/
void dynarray_add(DynArray *parr void *data)
{
int count;
count = parr->count + 1;
if (count*sizeof(void*) > parr->capacity)
dynarray_realloc(parr count*sizeof(void*));
parr->data[count - 1] = data;
parr->count = count;
}
/***********************************************************
* 功能: 初始化动态数组储存容量
* parr: 动态数组指针
* initsize: 动态数组初始化分配空间
**********************************************************/
void dynarray_init(DynArray *parr int initsize)
{
if(parr != NULL)
{
parr->data = (void**)malloc(sizeof(void*)*initsize);
parr->count = 0;
parr->capacity = initsize;
}
}
/***********************************************************
* 功能: 释放动态数组使用的内存空间
* parr: 动态数组指针
**********************************************************/
void dynarray_free(DynArray *parr)
{
void **p;
for (p = parr->data; parr->count; ++p --parr->count)
if (*p)
free(*p);
free(parr->data);
parr->data = NULL;
}
/***********************************************************
* 功能: 动态数组元素查找
* parr: 动态数组指针
* key: 要查找的元素
**********************************************************/
int dynarray_search(DynArray *parr int key)
{
int i;
int **p;
p = (int**)parr->data;
for (i = 0; i < parr->count; ++i p++)
if (key == **p)
return i;
return -1;
}
相关资源
- 易语言取微云数据V1源码易语言取微云
- 易语言Excel多表对应处理源码
- 易语言取word打开、另存为对话框窗口
- 易语言EXCEL另存为CSV文件源码
- delphi百度地图源码
- 易语言EMS快递查询源码
- 易语言快递查询源码
- 易语言查询79种快递源码
- 易语言搜搜mp3源码
- 易语言迅雷补丁源码
- 易语言高仿迅雷5安装包源码
- bootstrap demo 源码大全
- springboot整合RabbitMQ实现延时队列的两
- 关于Spring MVC项目maven中通过fileupload上
- 新一代Lora芯片sx126x的驱动源码
- 易语言版迅雷视频转换器源码
- 今日头条源码.zip
- CtrlAltQ全屏截图源码
- 易语言全屏截图源码
- 百度图片识别源码.rar
- 易语言穿越火线辅助程序源码
- WINDOWS内核安全编程 寒江独钓 光盘源
- 寒江独钓-Windows内核安全编程(完整版
- DevExpress 15.1.6 源码 全 百度云
- 很久以前的MUD游戏源码和mudos
- 易语言屏幕锁屏工具源码
- 易语言Beep应用例程源码
- 易语言API的用法之beep源码
- 易语言Beep卡农源码
- 易语言DLL函数查看器源码
评论
共有 条评论