结构中的伸缩组问题?

huanhuan30 2009-01-24 04:08:36

#include <stdio.h>
#include <stdlib.h>
struct flex
{
int count;
double average;
double scores[];
};
void showFlex (const struct flex *);
int main (void)
{
struct flex *pf1, *pf2;
int n = 5;
int i;
int tot = 0;

pf1 = malloc(sizeof(struct flex) + n * sizeof(double));
pf1->count = n;
for (i = 0; i < n; i++)
{
fp1->score[i] = 20.0 - i;
tot += fp1->score[i];
}
pf1->average = tot/n;
showFlex(pf1);

n = 9;
tot = 0;
pf2 = (void *)malloc(sizeof(struct flex) + n * sizeof(double)); /*malloc 是 void* 的返回值..这里面应该换成struct flex 还是其他? */
pf2->count = n;
for (i = 0; i < n; i++)
{
fp1->score[i] = 20.0 - i/2.0;
tot += pf2->score[i];
}
pf2->average = tot/i;
showFlex(pf2);
return 0;
}
void showFlex (const struct flex *p)
{
int i;
printf("Score: ");
for (i = 0; i < p->count; i++)
{
printf("%g ", p->score[i]);
}
printf("\n Average: %g\n", p->average);
}
...全文
140 6 打赏 收藏 转发到动态 举报
写回复
用AI写文章
6 条回复
切换为时间正序
请发表友善的回复…
发表回复
dongpy 2009-01-25
  • 打赏
  • 举报
回复
变长数组的做法,结构体和数组被分配在连续内存空间.

数组改成指针,可读性好些.
yutaooo 2009-01-25
  • 打赏
  • 举报
回复

看这个意思是要动态调整结构 flex 中的数组 scores 的大小。

这么干好不好真的值得商榷哦。

flex 结构大小固定。scores 指向数组不好吗?
Pajack 2009-01-24
  • 打赏
  • 举报
回复
struct flex *

顺便再问下:
pf1 = malloc(sizeof(struct flex) + n * sizeof(double));
这种代码目的何在?
xiaoyisnail 2009-01-24
  • 打赏
  • 举报
回复
struct flex *pf1
。。。
pf1 = malloc(sizeof(struct flex) + n * sizeof(double));
这种代码目的何在?
waizqfor 2009-01-24
  • 打赏
  • 举报
回复
struct flex *
huanhuan30 2009-01-24
  • 打赏
  • 举报
回复
这里面的 void* 要换成什么才合适????

69,382

社区成员

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

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