结构体的子项数量是否可变?怎么变?

yxq123 2007-09-06 03:46:03
各位高手:
你们好!请教一个问题:结构体的子项数量是否可变?如果可变,怎么变?
我想通过一个变量值的大小,来控制结构体的子项数量,可以实现吗?请各位大侠指教!先谢谢了!
...全文
248 16 打赏 收藏 转发到动态 举报
写回复
用AI写文章
16 条回复
切换为时间正序
请发表友善的回复…
发表回复
yxq123 2007-09-07
  • 打赏
  • 举报
回复
谢谢
dyw 2007-09-07
  • 打赏
  • 举报
回复
A a;
B* pB = (B*)a.base3;
for (int i=0; i<a.n3; i++)
{
B* pCurrent = pB[i];
// do something with pCurrent
}
yxq123 2007-09-07
  • 打赏
  • 举报
回复
TO:dyw(道不同不相为谋)
那怎样调用结构体中结构体的子项?

dyw 2007-09-07
  • 打赏
  • 举报
回复
可以那么理解。动态分配的都是相同元素数组,正好符合你的需要。
青稞 2007-09-07
  • 打赏
  • 举报
回复
看样子是哦。。
yxq123 2007-09-07
  • 打赏
  • 举报
回复
TO:dyw(道不同不相为谋)
你的意思是结构提中套结构体?
我啃 2007-09-07
  • 打赏
  • 举报
回复
long date[][50];
可以
我提供的是以前在LINUX TCP/IP提供的原始功能
复杂结构只能用动态分配
dyw 2007-09-06
  • 打赏
  • 举报
回复
偶那个做法是动态分配,要多少有多少。1楼提供的文章恐怕不能满足你的需求
yxq123 2007-09-06
  • 打赏
  • 举报
回复
To: misssir(仙人指路)
我要的是子项是可变的,根据某个变量的大小,决定子项的数量。
misssir 2007-09-06
  • 打赏
  • 举报
回复
用这个怎样
struct
{
int x;
union
{
int y;
double z;
char w[3];
}
}
misssir 2007-09-06
  • 打赏
  • 举报
回复

struct
{

}
yxq123 2007-09-06
  • 打赏
  • 举报
回复
To :Kenmark(fenix) ( ) 你给的文章很有帮助。
TO:lyg_zy(学无止境,宁静致远) 你给的结构我有点看不懂。
TO:dyw(道不同不相为谋) ( ) 你给的结构我也有点看不懂。
TO:GGYYBOY() ( ) 类太麻烦了。



不知道有没有更简单的方法。


TO:Kenmark(fenix) 如果子项是这样的:
long date[50];
如果想要子项变长,是不是这样:
long date[0][50];
或者这样:
long date[][50];
GGYYBOY 2007-09-06
  • 打赏
  • 举报
回复
能不能写成类呢
dyw 2007-09-06
  • 打赏
  • 举报
回复
可以。通过不变的项创建可变的项。例:
struct B {};
struct A
{
int n1;
void* base1; // 放int
int n2;
void* base2 // 放函数表
int n3;
void* base3; // 放其他结构B
...
};

base1 = malloc(sizeof(int)*n1);
base2 = malloc(sizeof(void*)*n2);
base3 = malloc(sizeof(B)*n3);

如果类型比较多,可使用VARIANT。
lyg_zy 2007-09-06
  • 打赏
  • 举报
回复
为什么有这样的需求?
为什么不这样定义struct
struct s
{
s( int v1Size,int class1Size)
{
v1.resize( v1Size);
v2.resize( class1Size);
}
int a;
std::vector< float > v1;
std::vector< class1 > v2;

}
我啃 2007-09-06
  • 打赏
  • 举报
回复
http://faq.csdn.net/read/216668.html
请看此文~

16,472

社区成员

发帖
与我相关
我的任务
社区描述
VC/MFC相关问题讨论
社区管理员
  • 基础类社区
  • Web++
  • encoderlee
加入社区
  • 近7日
  • 近30日
  • 至今
社区公告

        VC/MFC社区版块或许是CSDN最“古老”的版块了,记忆之中,与CSDN的年龄几乎差不多。随着时间的推移,MFC技术渐渐的偏离了开发主流,若干年之后的今天,当我们面对着微软的这个经典之笔,内心充满着敬意,那些曾经的记忆,可以说代表着二十年前曾经的辉煌……
        向经典致敬,或许是老一代程序员内心里面难以释怀的感受。互联网大行其道的今天,我们期待着MFC技术能够恢复其曾经的辉煌,或许这个期待会永远成为一种“梦想”,或许一切皆有可能……
        我们希望这个版块可以很好的适配Web时代,期待更好的互联网技术能够使得MFC技术框架得以重现活力,……

试试用AI创作助手写篇文章吧