| 网站首页 | 业界新闻 | 小组 | 威客 | 人才 | 下载频道 | 博客 | 代码贴 | 在线编程 | 编程论坛
欢迎加入我们,一同切磋技术
用户名:   
 
密 码:  
共有 962 人关注过本帖
标题:有关结构体嵌套的?
只看楼主 加入收藏
yaobao
Rank: 13Rank: 13Rank: 13Rank: 13
等 级:蒙面侠
威 望:4
帖 子:1854
专家分:4121
注 册:2012-10-25
收藏
得分:0 
小弟才疏学浅,请T版赐教

认认真真的学习,踏踏实实的走路:戒骄戒躁!!!
2012-12-26 20:50
yaobao
Rank: 13Rank: 13Rank: 13Rank: 13
等 级:蒙面侠
威 望:4
帖 子:1854
专家分:4121
注 册:2012-10-25
收藏
得分:0 
我这是最啰嗦的方法

认认真真的学习,踏踏实实的走路:戒骄戒躁!!!
2012-12-26 20:51
TonyDeng
Rank: 20Rank: 20Rank: 20Rank: 20Rank: 20
等 级:贵宾
威 望:304
帖 子:25859
专家分:48889
注 册:2011-6-22
收藏
得分:0 
对C来说,凡是用malloc()类申请的空间,都要在程序结束前自己手动释放!你只管请求空间不释放,就等于只拉屎不擦屁股。指针不是那么好用的!

授人以渔,不授人以鱼。
2012-12-26 20:52
yaobao
Rank: 13Rank: 13Rank: 13Rank: 13
等 级:蒙面侠
威 望:4
帖 子:1854
专家分:4121
注 册:2012-10-25
收藏
得分:0 
噢噢噢噢,忘了忘了,这,太高科技了。。。。谢谢T版

认认真真的学习,踏踏实实的走路:戒骄戒躁!!!
2012-12-26 20:53
h1023417614
Rank: 4
等 级:禁止访问
帖 子:211
专家分:237
注 册:2012-11-30
收藏
得分:0 
2012-12-26 20:54
TonyDeng
Rank: 20Rank: 20Rank: 20Rank: 20Rank: 20
等 级:贵宾
威 望:304
帖 子:25859
专家分:48889
注 册:2011-6-22
收藏
得分:0 
程序代码:
struct er
{
    struct yi *boy[3];
}


有干净利落的
程序代码:
struct er
{
    struct yi boy[3];
}

不用,要搞那么多事。其实代码写多了不说,还丢三落四,难道以为用了指针数组就真省了空间?还不是得申请?除了申请的数据空间,还额外多了指针自己占用的空间。

授人以渔,不授人以鱼。
2012-12-26 20:56
yaobao
Rank: 13Rank: 13Rank: 13Rank: 13
等 级:蒙面侠
威 望:4
帖 子:1854
专家分:4121
注 册:2012-10-25
收藏
得分:0 
程序代码:
#include<stdio.h>//错误啊
#include<stdlib.h>

struct yi
{
    char name[10];
    int age;
    char address[20];
};

struct er
{
    struct yi *boy[3];
};

void main()
{int i;
    struct er *p;
    p=(struct er*)malloc(sizeof(struct er));
    p->boy[0]=(struct yi *)malloc(sizeof(struct yi)*3);
    for(i=0;i<3;i++)
    scanf("%s%d%s",(p->boy[0]+i)->name,&(p->boy[0]+i)->age,(p->boy[0]+i)->address);

        for(i=0;i<3;i++)
    printf("%s\t%d\t%s\n",(p->boy[0]+i)->name,(p->boy[0]+i)->age,(p->boy[0]+i)->address);
        free(p->boy[0]);
        free(p);
}
另一种实现过程,今天刚跟别人学的,现学现卖

认认真真的学习,踏踏实实的走路:戒骄戒躁!!!
2012-12-26 20:58
h1023417614
Rank: 4
等 级:禁止访问
帖 子:211
专家分:237
注 册:2012-11-30
收藏
得分:0 
struct er
{
    struct yi boy[3];
}

这要怎么分配空间啊
2012-12-26 21:00
h1023417614
Rank: 4
等 级:禁止访问
帖 子:211
专家分:237
注 册:2012-11-30
收藏
得分:0 
程序代码:
#include<stdio.h>//错误啊
#include<stdlib.h>

struct yi
{
    char name[10];
    int age;
    char address[20];
};

struct er
{
    struct yi boy[3];
};

void main()
{int i;
    struct er *p;
    p=(struct er*)malloc(sizeof(struct er));

    for(i=0;i<3;i++)
    scanf("%s%d%s",p->boy[i]->name,&p->boy[i]->age,p->boy[i]->address);

        for(i=0;i<3;i++)
    printf("%s\t%d\t%s\n",p->boy[i]->name,p->boy[i]->age,p->boy[i]->address);   
}

这样不行  郁闷
2012-12-26 21:01
TonyDeng
Rank: 20Rank: 20Rank: 20Rank: 20Rank: 20
等 级:贵宾
威 望:304
帖 子:25859
专家分:48889
注 册:2011-6-22
收藏
得分:0 
一般来说,除非数据规模太大,或者是无法预先确定需要多少个元素(比如这里的3不能事先确定),才迫不得已用堆内存使用指针(堆对象的寻访读写速度比栈慢),像这种事先知道规模的,为了代码的清洁简单,不需要使用指针数组。作为练习,不妨学习一下,但是必须时刻记着释放问题——在Windows NT体系内,你不释放也可以,但在别的系统中,这可是绝大问题,C程序员的第一戒,出来工作,被人看到你这样写代码,嘿嘿~

授人以渔,不授人以鱼。
2012-12-26 21:02
快速回复:有关结构体嵌套的?
数据加载中...
 
   



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

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