怎样动态定义结构体 什么意思?你是说运行时定义结构?你只能指针了。计算出整修数据块占多少内存,然后new一个这么大的空间 解决方案 » 免费领取超大流量手机卡,每月29元包185G流量+100分钟通话, 中国电信官方发货 若是只有几个,用union 试试。 用条件编译:如#ifdefine Astruct Test{int a;}#elsestruct Test{char a;}#endiftypedef struct Test Test_A 用条件编译:如#ifdefine Astruct Test{int a;}#elsestruct Test{char a;}#endiftypedef struct Test Test_A typedef struct{ CPoint t; Long m_lSpeed;}_TAGSHIP;在函数中你可以_TAGSHIP *m_ship=new _TAGSHIP[10];这样就可以用这个指针了。 说的不明白是吧,我解释一下。foxbase或者是SQL大家知道吧,我要实现的使用vc来实现他们的creat table的功能。winne_ll(feiyang) 让我试试,如果行我加分,不过我vc比较菜,有更简单的方法吗?opentuxedo(开缝的燕尾服)我知道这个原理,但真么实现呀? 这样也行,例如在*.txt文件中有下面一段字符,怎样把它读出来并转换成相应的类型。typedef struct{ bool m_bEmployed; int m_iAge; CString m_sName; int m_iStatus;}; 转换成类型??能行吗?用指针到是可以动态申请存放这样的一个结构空间的变量,直接typedef成一个类型???不行吧 联合用法举例;struct table{ int pp; char tt[20];};struct list{ char name; char password;};struct All{ int ID; union { struct table t; struct list l; int li; }uk;};在结构 All中 t,l,li共用一个内存单元,也就是起始地址相同。但你不应该用联合。它是死的,不能动态修改,你应该定义一种数据结构以不变应万变。可读取任何组合的表。比如;#define TYPEINT 0#define TYPECHAR 1#define TYPEINT 2struct colum{ int varType;//变量类型 int bufferSize;//缓冲区大小 int BufferOffset; //缓冲区偏移;};class table//表的类定义{ struct colum* pColums;//指向列数组的指针; int columCount;//列数 int recordWidth; int recordCount; void *tableBuffer; …… ……}算法:recordWidth=所有列的宽度总和;pColums[M].BufferOffset=小于M的列的bufferSize总和;第N个纪录的第M列的缓冲区指针=tableBuffer+recordWidth*N+pColums[M].BufferOffset; 当你得到table[m][n]的指针时,你可以根据第n列的数据类型table::pColum[n].varType;强制转换成相应类型处理,当然也可以重新分配等等,但你要维护这个数据结构,工作量不少啊,而且还要优化它。 doghead(长青) 太酷了!有没有简单的?期待中------------- 兑现散分承诺:REDirectUI新版上线,支持XAML渲染 又是断言失败 用多媒体定时器做辅助线程不断读串口的问题 libjpeg的使用,急求 ERROR:贴子回复次数大于跟给分次数:怎么结贴。 哪位前辈有比较经典的关于CAsyncSocket类的源码? 谁能告诉我MFC DLL和MFC扩展DLL有何区别 ATl复合控件疑问 鼠标选中CListCtrl上一行时,怎么获取它的坐标? 头文件编译出错? ---------关于CListCtrl控件的简单问题--------来者有分 请问在济南的哥们,鲁能的程序员一个月能挣多少money??
struct Test
{
int a;
}
#else
struct Test
{
char a;
}
#endiftypedef struct Test Test_A
struct Test
{
int a;
}
#else
struct Test
{
char a;
}
#endiftypedef struct Test Test_A
{
CPoint t;
Long m_lSpeed;
}_TAGSHIP;
在函数中
你可以
_TAGSHIP *m_ship=new _TAGSHIP[10];
这样就可以用这个指针了。
foxbase或者是SQL大家知道吧,我要实现的使用vc来实现他们的creat table
的功能。
winne_ll(feiyang) 让我试试,如果行我加分,不过我vc比较菜,有更简单的方法吗?
opentuxedo(开缝的燕尾服)我知道这个原理,但真么实现呀?
typedef struct
{
bool m_bEmployed;
int m_iAge;
CString m_sName;
int m_iStatus;
};
struct table
{
int pp;
char tt[20];
};
struct list
{
char name;
char password;
};
struct All
{
int ID;
union
{ struct table t;
struct list l;
int li;
}uk;
};
在结构 All中 t,l,li共用一个内存单元,也就是起始地址相同。
但你不应该用联合。它是死的,不能动态修改,你应该定义一种数据结构
以不变应万变。可读取任何组合的表。
比如;
#define TYPEINT 0
#define TYPECHAR 1
#define TYPEINT 2
struct colum
{
int varType;//变量类型
int bufferSize;//缓冲区大小
int BufferOffset; //缓冲区偏移;
};
class table//表的类定义
{
struct colum* pColums;//指向列数组的指针;
int columCount;//列数 int recordWidth;
int recordCount;
void *tableBuffer;
……
……
}
算法:recordWidth=所有列的宽度总和;
pColums[M].BufferOffset=小于M的列的bufferSize总和;
第N个纪录的第M列的缓冲区指针=tableBuffer+recordWidth*N+
pColums[M].BufferOffset;
有没有简单的?
期待中-------------