用C/C++设计Lu结构、字典、类等高级数据类型

本文介绍了如何使用C/C++设计Lu系统的结构、字典和类等高级数据类型,详细讲解了它们的实现原理和难点,包括结构的线性表特性、字典的双向链表存储以及类的继承和派生概念。同时,文章提供了相关源代码供读者参考学习。
摘要由CSDN通过智能技术生成

欢迎访问 Lu程序设计

用C/C++设计Lu结构、字典、类等高级数据类型

1 说明

    本文没有直接给出演示例子,而是对Lu系统扩展库LuSystem实现的结构、字典、类等高级数据类型做说明,但你仍然需要下载Lu32脚本系统,并下载软件包lu1code.rar,LuSystem的源代码就在这个软件包中,源代码中用到的Lu核心库函数仍然参考Lu编程指南。由于LuSystem是一个Lu扩展动态库,你可能还要参考Lu扩展动态库说明

    本文假定你已经阅读了本教程系列的前面的内容,对涉及到的Lu基本数据类型、Lu键树、以#开头的标识符(字符串)确定的唯一的整数等内容不再重复说明。

2 关于Lu系统扩展库LuSystem

    LuSystem32.dll是一个Lu系统扩展动态库,包含一些增强Lu系统功能的函数、对系统内置类型的扩展以及一些新增数据类型等等。LuSystem不仅是对Lu系统的扩充,更在于演示Lu是极易扩充其功能的脚本,很少有脚本允许用户能方便地添加像字典、结构、类等高级的数据结构,但Lu允许,而且实现这些很容易,因而,LuSystem也是编程用户极佳的练手工具。

    为了便于理解本文,可以先看一下头文件LuSystem32.h(包含了字典、结构、类等数据结构的定义)和该库的入口文件LuSystem32.cpp(定义了函数LuDll32,Lu扩展库唯一的输出函数)。

3 结构(struct)实现原理及难点分析

    结构(struct)是一个线性表,可以存放若干任意的Lu数据。结构成员必须以#开头。结构成员的存储顺序(递增排列)与其定义顺序不一定相同,当然这并不影响使用。例如以下脚本代码:

!!!using("sys");    //使用命名空间sys
struct[#num, #姓名 : "luuu", #年龄].o[];    //函数o用于输出一个对象

    结果(成员#num#年龄没有赋值,故值为nil):

struct{#num : nil , #姓名 : luuu , #年龄 : nil}

    从头文件LuSystem32.h中可找到的结构(struct)定义如下:

struct SStruct{		//结构
	luINT max;	//成员数目
	luVOID *Name;	//成员名字(递增排列以加快访问速度),由一个以#开头的标识符(字符串)确定的唯一的整数
	LuData *Member;	//成员
};


    注意结构定义中,成员名字不是使用字符串,而是使用由该字符串确定的一个唯一整数来标识,显然这样访问速度更快,并且成员是递增排列的,更加快了访问速度;另外,结构成员是Lu基本数据类型,这样可以存储任意的数据,包括另一个结构对象,甚至是自身。

    从结构的实现文件Struct.cpp中可以找到如下两个函数:

void _stdcall DelStruct(void *vStruct)	/
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值