免费注册 查看新帖 |

Chinaunix

  平台 论坛 博客 文库
最近访问板块 发新帖
楼主: vveinv
打印 上一主题 下一主题

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

论坛徽章:
0
11 [报告]
发表于 2007-09-07 23:45 |只看该作者
我觉得是不是二级指针导致没有初始化内存。因为同一个接口,程序传出来的是可以用的,但是我按这个结构赋值后运行就报指针错。
但不知道怎么初始化这内存。
没有源码,看不到程序里面是怎么初始化的。

[ 本帖最后由 vveinv 于 2007-9-7 23:47 编辑 ]

论坛徽章:
0
12 [报告]
发表于 2007-09-07 23:47 |只看该作者
类型搞错了   LPMyInfoDetail 就是 MyInfoDetail * 了,不要再加 *

论坛徽章:
0
13 [报告]
发表于 2007-09-07 23:53 |只看该作者
晕,我知道不加*是没有问题的。但是这是微软弄出来的接口,他就是有*,就是二级指针。我今天都被它要搞疯了。
原来标准的结构是这样的。这是微软WOSA标准的头文件的一部分。我也不想它有*
typedef struct _wfs_cdm_cashunit
{
    USHORT          usNumber;
    USHORT          usType;
    LPSTR           lpszCashUnitName;
    CHAR            cUnitID[5];
    CHAR            cCurrencyID[3];
    ULONG           ulValues;
    ULONG           ulInitialCount;
    ULONG           ulCount;
    ULONG           ulRejectCount;
    ULONG           ulMinimum;
    ULONG           ulMaximum;
    BOOL            bAppLock;
    USHORT          usStatus;
    USHORT          usNumPhysicalCUs;
    LPWFSCDMPHCU   *lppPhysical;
} WFSCDMCASHUNIT, * LPWFSCDMCASHUNIT;

typedef struct _wfs_cdm_cu_info
{
    USHORT          usTellerID;
    USHORT          usCount;
    LPWFSCDMCASHUNIT *lppList;
} WFSCDMCUINFO, * LPWFSCDMCUINFO;

论坛徽章:
0
14 [报告]
发表于 2007-09-07 23:54 |只看该作者
myinfo.MyList=(LPMyInfoDetail )malloc(sizeof(MyInfoDetail)*10);

啊.什麽破編譯器啊,這樣的警告都不報.

论坛徽章:
0
15 [报告]
发表于 2007-09-07 23:58 |只看该作者
我调用它传出来的是没有问题的。

    WFSCDMCUINFO    m_CurrentCuInfo;
    switch(m_CurrentCuInfo.lppList[i]->usType)
    {
    case WFS_CDM_TYPENA:


我这么调用的它是没有问题的,但我自己建个相似的变量,赋值就出现指针错误。

论坛徽章:
0
16 [报告]
发表于 2007-09-08 00:05 |只看该作者
神啊,救救我吧

论坛徽章:
0
17 [报告]
发表于 2007-09-08 11:10 |只看该作者
提示: 作者被禁止或删除 内容自动屏蔽

论坛徽章:
0
18 [报告]
发表于 2007-09-08 21:59 |只看该作者
jamesr ,不行,malloc就报错.

论坛徽章:
0
19 [报告]
发表于 2007-09-08 22:08 |只看该作者

我改了下,这个好像可以

这么改的
int _tmain(int argc, _TCHAR* argv[])
{
    int i;
    MyInfo myinfo;
    LPMyInfoDetail myinfodetail;
    myinfo.Count=1;
    myinfodetail=(LPMyInfoDetail)malloc(sizeof(MyInfoDetail)*myinfo.Count);
    myinfo.MyList=&myinfodetail;
&nbsp;&nbsp;&nbsp;&nbsp;for(i=0;i<myinfo.Count;i++)
&nbsp;&nbsp;&nbsp;&nbsp;{
&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;myinfodetail->Number=i;
&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;sprintf_s(myinfodetail->Type,"%d",i);
&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;myinfodetail=myinfodetail+1;
&nbsp;&nbsp;&nbsp;&nbsp;}
&nbsp;&nbsp;&nbsp;&nbsp;for(i=0;i<myinfo.Count;i++)
&nbsp;&nbsp;&nbsp;&nbsp;{
&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;printf("[%d][%s]\n",myinfo.MyList[i]->Number,myinfo.MyList[i]->Type);

&nbsp;&nbsp;&nbsp;&nbsp;}

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

论坛徽章:
0
20 [报告]
发表于 2007-09-08 22:11 |只看该作者
还是不对
myinfodetail=myinfodetail+1;偏移好像把myinfo.MyList的地址也偏移了。
我再试试.
您需要登录后才可以回帖 登录 | 注册

本版积分规则 发表回复

  

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

清除 Cookies - ChinaUnix - Archiver - WAP - TOP