动态生成结构体数组

lty369963 2013-08-18 10:37:40
我最开始定义的是一个全局的结构体数组
#define M_COL 14

struct NodeLevel {
int Item;
int brother;
int support;
};
struct NodeLevel ItemSets2[(M_COL-1)*M_COL/2];

我现在想动态构造这么一个结构体数组,也是全局的,怎么定义?请大侠指点
...全文
409 15 打赏 收藏 转发到动态 举报
写回复
用AI写文章
15 条回复
切换为时间正序
请发表友善的回复…
发表回复
赵4老师 2013-08-19
  • 打赏
  • 举报
回复
2楼已经给出答案了。
大尾巴猫 2013-08-19
  • 打赏
  • 举报
回复
struct NodeLevel *ItemSets2 = new NodeLevel[(RankLen-1)*RankLen/2]; -------------------------------------------------------------------------- ItemSets2如果是全局的指针,你放在void FrequentItemSets1() 后面定义就能得到RankLen的值了? 上面那句执行的时候void FrequentItemSets1() 还没执行,RankLen的值当然为0 。那个时候还没进main()函数。 这么做: struct NodeLevel *ItemSets2 = NULL; 然后在main函数中调用 void FrequentItemSets1()后才用new生成动态数组。
lty369963 2013-08-19
  • 打赏
  • 举报
回复
引用 8 楼 max_min_ 的回复:

//在这句前面打印看看ncount的值是多少
RankLen=ncount;
//还有你这个RankLen是怎么定义申明的?
是5,RankLen在下面的函数我也用到过,但是动态生成的时候,我调用,却是0
lty369963 2013-08-19
  • 打赏
  • 举报
回复
引用 9 楼 zyaiwx 的回复:
[quote=引用 楼主 lty369963 的回复:] 我最开始定义的是一个全局的结构体数组 #define M_COL 14 struct NodeLevel { int Item; int brother; int support; }; struct NodeLevel ItemSets2[(M_COL-1)*M_COL/2]; 我现在想动态构造这么一个结构体数组,也是全局的,怎么定义?请大侠指点
全局还动态干嘛?就直接定义一个静态数组就好了,你的M_COL都已经定了[/quote] 为了节省空间啊
lty369963 2013-08-19
  • 打赏
  • 举报
回复
RankLen也是全局变量
zybjtu 2013-08-19
  • 打赏
  • 举报
回复
引用 楼主 lty369963 的回复:
我最开始定义的是一个全局的结构体数组 #define M_COL 14 struct NodeLevel { int Item; int brother; int support; }; struct NodeLevel ItemSets2[(M_COL-1)*M_COL/2]; 我现在想动态构造这么一个结构体数组,也是全局的,怎么定义?请大侠指点
全局还动态干嘛?就直接定义一个静态数组就好了,你的M_COL都已经定了
max_min_ 2013-08-19
  • 打赏
  • 举报
回复

//在这句前面打印看看ncount的值是多少
RankLen=ncount;
//还有你这个RankLen是怎么定义申明的?
lty369963 2013-08-19
  • 打赏
  • 举报
回复
有没有大侠帮忙?
lty369963 2013-08-19
  • 打赏
  • 举报
回复
引用 13 楼 ananluowei 的回复:
struct NodeLevel *ItemSets2 = new NodeLevel[(RankLen-1)*RankLen/2]; -------------------------------------------------------------------------- ItemSets2如果是全局的指针,你放在void FrequentItemSets1() 后面定义就能得到RankLen的值了? 上面那句执行的时候void FrequentItemSets1() 还没执行,RankLen的值当然为0 。那个时候还没进main()函数。 这么做: struct NodeLevel *ItemSets2 = NULL; 然后在main函数中调用 void FrequentItemSets1()后才用new生成动态数组。
、================================== 就是这个问题!
5t4rk 2013-08-18
  • 打赏
  • 举报
回复
struct Resolution
{
 int *Vector;
 int Value;
};

 Resolution *Re;
 Re=(Resolution *)malloc(n*sizeof(Resolution)); //分配空间
max_min_ 2013-08-18
  • 打赏
  • 举报
回复


//malloc
struct NodeLevel *ItemSets2 = (struct NodeLevel *)malloc(sizeof(struct NodeLevel)*((M_COL-1)*M_COL/2));

//new 
struct NodeLevel *ItemSets3 = new NodeLevel[(M_COL-1)*M_COL/2];
全局问题,比较简单位置换下或者静态的!
qq120848369 2013-08-18
  • 打赏
  • 举报
回复
动态只能malloc
lty369963 2013-08-18
  • 打赏
  • 举报
回复
void FrequentItemSets1() { //CreateBitArray(); int nSupport=0; int ncount=0;//计算第一项集的列的长度 for(int j=1;j<6;++j) { for(int i=0;i<9;++i) { if(BitArray[i][j]==1) nSupport++; } if (nSupport>=support_min) { ncount++; ItemSets1[j-1].support=nSupport; } nSupport=0; } RankLen=ncount; printf("频繁一项集:\n"); for (j=0;j<ncount;++j) { printf("I%d: %d",(j+1),ItemSets1[j].support); //printf("%d ",ItemSets1[j].support); printf("\n"); } printf("\n"); //验证孩子指针 //printf("%d\n",ItemSets1[0].FristChild); } struct NodeLevel *ItemSets2 = new NodeLevel[(RankLen-1)*RankLen/2]; 我是想这么写
max_min_ 2013-08-18
  • 打赏
  • 举报
回复
引用 4 楼 lty369963 的回复:
是这样的, 我前面有个函数,有个变量RankLen, 在跳出这个函数的下面,我要定义一个全局的结构体数组: struct NodeLevel *ItemSets2 = new NodeLevel[(RankLen-1)*RankLen/2]; 可是编译器说RankLen=-0; 我下一个函数调用这个RankLen,就不说0,是他应有的值,怎么办
把你代码贴上来看看吧! 你定义全局的看看你的这个RankLen是怎么传值的! 可能是这个值没有传对!
lty369963 2013-08-18
  • 打赏
  • 举报
回复
是这样的, 我前面有个函数,有个变量RankLen, 在跳出这个函数的下面,我要定义一个全局的结构体数组: struct NodeLevel *ItemSets2 = new NodeLevel[(RankLen-1)*RankLen/2]; 可是编译器说RankLen=-0; 我下一个函数调用这个RankLen,就不说0,是他应有的值,怎么办

69,379

社区成员

发帖
与我相关
我的任务
社区描述
C语言相关问题讨论
社区管理员
  • C语言
  • 花神庙码农
  • 架构师李肯
加入社区
  • 近7日
  • 近30日
  • 至今
社区公告
暂无公告

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