免费注册 查看新帖 |

Chinaunix

  平台 论坛 博客 文库
123下一页
最近访问板块 发新帖
查看: 4903 | 回复: 20
打印 上一主题 下一主题

结构里面的机构数组指针怎么用? [复制链接]

论坛徽章:
0
跳转到指定楼层
1 [收藏(0)] [报告]
发表于 2007-09-07 20:31 |只看该作者 |倒序浏览
像下面这样的结构里面带有结构数组指针的,我怎么调用?能编译,一执行就报指针越界错误,malloc了也没用。
#include "stdafx.h"
#include <malloc.h>
#include <stdio.h>
#include <memory.h>


typedef struct _myinfo_detail
{
    long    Number;
    char    Type[256];
} MyInfoDetail, * LPMyInfoDetail;

typedef struct _myinfo
{
    long Count;
    LPMyInfoDetail *MyList;
} MyInfo, * LPMyInfo;

int main(int argc, char* argv[])
{
    MyInfo myinfo;
//    myinfo=(LPMyInfo)malloc(sizeof(MyInfo));

    myinfo.MyList=(LPMyInfoDetail* )malloc(sizeof(MyInfoDetail)*10);
    myinfo.Count=3;
    for(int i=0;i<myinfo.Count;i++)
    {
        myinfo.MyList[i]->Number=i;
    }



    printf("Hello World!\n");
    return 0;
}

论坛徽章:
36
IT运维版块每日发帖之星
日期:2016-04-10 06:20:00IT运维版块每日发帖之星
日期:2016-04-16 06:20:0015-16赛季CBA联赛之广东
日期:2016-04-16 19:59:32IT运维版块每日发帖之星
日期:2016-04-18 06:20:00IT运维版块每日发帖之星
日期:2016-04-19 06:20:00每日论坛发贴之星
日期:2016-04-19 06:20:00IT运维版块每日发帖之星
日期:2016-04-25 06:20:00IT运维版块每日发帖之星
日期:2016-05-06 06:20:00IT运维版块每日发帖之星
日期:2016-05-08 06:20:00IT运维版块每日发帖之星
日期:2016-05-13 06:20:00IT运维版块每日发帖之星
日期:2016-05-28 06:20:00每日论坛发贴之星
日期:2016-05-28 06:20:00
2 [报告]
发表于 2007-09-07 20:37 |只看该作者
malloc()在stdlib.h吧

论坛徽章:
0
3 [报告]
发表于 2007-09-07 20:44 |只看该作者

??不是编译不过,是调用报指针越界,和头文件没有关系的。

在vc6上编的,主要是例如myinfo.MyList->Number,结构里面的结构数组指针里面的变量怎么调用。试了半天还是不行。唉

论坛徽章:
0
4 [报告]
发表于 2007-09-07 20:45 |只看该作者
LPMyInfoDetail *MyList;

MyList是二级指针

论坛徽章:
0
5 [报告]
发表于 2007-09-07 20:45 |只看该作者
还有,想问问这种结构怎么初始化。谢谢

论坛徽章:
0
6 [报告]
发表于 2007-09-07 20:49 |只看该作者
可能没说清楚,就是
typedef struct _myinfo
{
    long Count;
    LPMyInfoDetail *MyList;
} MyInfo, * LPMyInfo;
里面的count的个数代表有MyList机构数组的数量,这个值是可变的。

论坛徽章:
0
7 [报告]
发表于 2007-09-07 20:54 |只看该作者
为什么用二级指针呢?

原帖由 vveinv 于 2007-9-7 20:49 发表
可能没说清楚,就是
typedef struct _myinfo
{
    long Count;
    LPMyInfoDetail *MyList;
} MyInfo, * LPMyInfo;
里面的count的个数代表有MyList机构数组的数量,这个值是可变的。

论坛徽章:
0
8 [报告]
发表于 2007-09-07 20:59 |只看该作者
我晕,老外写的,俺必须引用,俺开始觉得指针越界是没有malloc,但发现加了还错。

论坛徽章:
0
9 [报告]
发表于 2007-09-07 22:39 |只看该作者
struct _myinfo中的
LPMyInfoDetail *MyList;
应该为:
LPMyInfoDetail MyList;

程序中的
myinfo.MyList=(LPMyInfoDetail* )malloc(sizeof(MyInfoDetail)*10);
应该为:
myinfo.MyList=(LPMyInfoDetail)malloc(sizeof(MyInfoDetail)*10);

myinfo.MyList[ i ] ->Number=i;
应该为:
myinfo.MyList[ i ] .Number=i;

[ 本帖最后由 liuty2006 于 2007-9-7 22:46 编辑 ]

论坛徽章:
0
10 [报告]
发表于 2007-09-07 23:41 |只看该作者
9楼,结构不能改,这个结构是cen xfs的标准结构,是参数,俺没办法改。
您需要登录后才可以回帖 登录 | 注册

本版积分规则 发表回复

  

北京盛拓优讯信息技术有限公司. 版权所有 京ICP备16024965号-6 北京市公安局海淀分局网监中心备案编号:11010802020122 niuxiaotong@pcpop.com 17352615567
未成年举报专区
中国互联网协会会员  联系我们:huangweiwei@itpub.net
感谢所有关心和支持过ChinaUnix的朋友们 转载本站内容请注明原作者名及出处

清除 Cookies - ChinaUnix - Archiver - WAP - TOP