| 网站首页 | 业界新闻 | 小组 | 威客 | 人才 | 下载频道 | 博客 | 代码贴 | 在线编程 | 编程论坛
欢迎加入我们,一同切磋技术
用户名:   
 
密 码:  
共有 1189 人关注过本帖
标题:[求助]有关结构体的问题
只看楼主 加入收藏
sjt
Rank: 1
等 级:新手上路
帖 子:30
专家分:0
注 册:2007-8-1
收藏
 问题点数:0 回复次数:19 
[求助]有关结构体的问题

主位高手们,请教一下:
结构体中还可以继续包含结构体。例如
struct data
{float time;
struct setting;
};
问题是:data形结构体里的setting形结构体的个数能不能根据用户的输入而决定???就是在建立结构体data时,能不能根据用户的输入而决定建立的结构体setting的个数????

搜索更多相关主题的帖子: 问题 setting 结构体 用户 
2007-08-05 18:23
jackys2006
Rank: 1
等 级:新手上路
帖 子:195
专家分:0
注 册:2006-3-10
收藏
得分:0 
可以的,结构体的最后一项可以设置为可变的,具体怎么样我不是很清楚,看看相关的书吧

2007-08-05 18:35
星星鱼虾蟹
Rank: 1
等 级:新手上路
帖 子:191
专家分:0
注 册:2007-6-2
收藏
得分:0 

你可以将setting定义为指向链表的指针,当用户输入后,用malloc函数生成指定长度的链表.


2007-08-05 18:37
李天飞
Rank: 1
等 级:新手上路
帖 子:9
专家分:0
注 册:2007-8-2
收藏
得分:0 

只是大概明白你的意思,应该可以。比如2楼大哥说的建立指针连表,或者改为结构体数组也可以

2007-08-05 19:41
sjt
Rank: 1
等 级:新手上路
帖 子:30
专家分:0
注 册:2007-8-1
收藏
得分:0 
回复:(李天飞)只是大概明白你的意思,应该可以。比...

好的,我先试试

2007-08-05 22:23
maoguoqing
Rank: 6Rank: 6
来 自:重庆
等 级:贵宾
威 望:28
帖 子:2980
专家分:19
注 册:2005-12-5
收藏
得分:0 
以下是引用jackys2006在2007-8-5 18:35:35的发言:
可以的,结构体的最后一项可以设置为可变的,具体怎么样我不是很清楚,看看相关的书吧

不少最后一项,是任何一项都可以,
还有,不能说是什么可变的,只是一个指针,该指针本身的大小是固定的,只是它指向哪里,指向多大的内存区域,是不确定的。


天行健,君子以自强不息!!QQ:68660681
2007-08-05 23:16
sjt
Rank: 1
等 级:新手上路
帖 子:30
专家分:0
注 册:2007-8-1
收藏
得分:0 
回复:(maoguoqing)以下是引用jackys2006在2007-8-5...
我是想问:在一个data形结构体里面setting结构体的个数能不能由用户决定???
2007-08-05 23:32
maoguoqing
Rank: 6Rank: 6
来 自:重庆
等 级:贵宾
威 望:28
帖 子:2980
专家分:19
注 册:2005-12-5
收藏
得分:0 

你的意思这样?

struct data
{float time;
struct setting s1;
struct setting s2;
...
struct setting sn;
};

如果是那样的话就如3楼所说
struct data
{float time;
struct setting *pS;//指向setting类型的指针就可以了
};

到时候你就可以这样使用:
scanf("%d",&n);
struct data d;
d.pS = (struct setting*) malloc(sizeof(struct setting)*n);


天行健,君子以自强不息!!QQ:68660681
2007-08-05 23:41
sjt
Rank: 1
等 级:新手上路
帖 子:30
专家分:0
注 册:2007-8-1
收藏
得分:0 
回复:(maoguoqing)你的意思这样?struct data{floa...

你好,这是我按照你说的编的程序,可是怎么输出的时候只有前两个数据是正确的?
#define NULL 0
struct data
{long time;
struct setting *ps;
struct data *next;
};
struct setting
{int money;
float sum;
struct setting *next;
};
main()
{int n,a;
char s;
struct data *d;struct setting *b;
printf("Please input the totol number \n");
scanf("%d",&n);
d=(struct data*)malloc(sizeof(struct data));
d->ps=b=(struct setting*)malloc(sizeof(struct setting)*n);

printf("please tell me wen you bought this jijin\n");
scanf("%ld",&(*d).time);
for(a=1;a<=n;a++)
{
printf("money\n");
scanf("%d",&((*d).ps)->money);
printf("sum\n");
scanf("%d",&((*d).ps)->sum);
if(a!=n)
{
(d->ps)->next=(struct setting*)malloc(sizeof(struct setting)*n);
d->ps=(struct setting*)malloc(sizeof(struct setting)*n);
}
else
d->ps->next=NULL;
}
d->next=NULL;
getch();
d->ps=b;
printf("%ld\n",(*d).time);
do
{
printf("%d\n",((*d).ps)->money);
printf("%d\n",((*d).ps)->sum);
d->ps=(d->ps)->next;
getch();
}while(d->ps!=NULL);
getch();
}

2007-08-06 11:49
aipb2007
Rank: 8Rank: 8
来 自:CQU
等 级:贵宾
威 望:40
帖 子:2879
专家分:7
注 册:2007-3-18
收藏
得分:0 

你把struct setting看成一个类型不就行了,把它换成int看看,用个动态分配内存不就结了!


Fight  to win  or  die...
2007-08-06 12:08
快速回复:[求助]有关结构体的问题
数据加载中...
 
   



关于我们 | 广告合作 | 编程中国 | 清除Cookies | TOP | 手机版

编程中国 版权所有,并保留所有权利。
Powered by Discuz, Processed in 0.028817 second(s), 9 queries.
Copyright©2004-2024, BCCN.NET, All Rights Reserved