资源简介
自己动手写编译器、链接器 (随书源码)
代码片段和文件信息
// 《自己动手写编译器、链接器》配套源代码
#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;
}
相关资源
- 我的世界源码(易语言版)
- labview编程软件滤波器以及编写程序设
- 我的界面(visual foxpro)源码
- 易语言:一键cf基址源码
- The Secret Path 3D 3D魔方迷宫[源码][scra
- scratch垃圾分类源码(最终版本).sb
- 微软masm汇编编译器
- 安卓QQ6.71协议源码易语言,qq协议源码
- 编译原理实验工具及参考源码(lex&
- E盾偷后台工具源码
- UNIX/LINUX编程实践教程的源码
- 类pascal语言编译器(编译原理实验)
- 十以内加减法练习 powerbuilder源码
- 农场开发项目
- OCR源码
- PLC上位机编程软件
- 用foobar2000听google音乐[更新一下]
- 学生信息管理系统源码
- 用VC 编写的仿QQ聊天室程序源代码
- 毕业论文之温度传感器DS18B20(源码
- 可自定义导航网站源码
- 栅栏填充算法源码(VC)
- msp430F149操作红外接收模块源码
- [免费]图像识别c 源码
- 周易排盘源码
- RSA算法源码
- 一个人脸识别程序源码
- 编译原理课程设计:词法语法编译器
- 透明加密源码及说明
- 电视直播源码
评论
共有 条评论