免费注册 查看新帖 |

Chinaunix

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

[C] 请问:数组的指针 如何指向结构体中的成员? [复制链接]

论坛徽章:
0
跳转到指定楼层
1 [收藏(0)] [报告]
发表于 2009-04-17 14:57 |只看该作者 |倒序浏览
问题如下:
我定义了一个结构体和一个数组:
unsigned int buf[256]={......}; //省略号代表里面的内容

typedef struct{
    unsigned int    head;            
    unsigned int    name;            
    unsigned int    version;               
}PACKED    S_FORMAT,    *PS_FORMAT;

再定义两个指针:
unsigned int  *ps;
PS_FORMAT  *ptr;

然后进行操作:
ps=buf;
ptr->head = ps;
ptr->name = ps+1
ptr->version = ps+2;

编译的时候总是warning:assignment makes integer from pointer without a cast.
请问这是什么原因?该如何修改?


我感觉好像是类型不匹配什么的?

论坛徽章:
1
天蝎座
日期:2013-08-25 10:27:22
2 [报告]
发表于 2009-04-17 15:02 |只看该作者
unsigned int    head;            
    unsigned int    name;            
    unsigned int    version;

这3个成员并不是指针

论坛徽章:
0
3 [报告]
发表于 2009-04-17 15:03 |只看该作者
unsigned int*    head;            
    unsigned int*    name;            
    unsigned int*    version;

论坛徽章:
0
4 [报告]
发表于 2009-04-17 15:05 |只看该作者
ptr->head = *(ps);
ptr->name = *(ps+1);
ptr->version = *(ps+2);

论坛徽章:
0
5 [报告]
发表于 2009-04-17 15:09 |只看该作者
谢谢楼上几位,问题解决了。呵呵!

我这样做的:
ptr->head = *ps;
ptr->name = *(ps+1);
ptr->version = *(ps+2);

[ 本帖最后由 herocsz 于 2009-4-17 15:38 编辑 ]

论坛徽章:
0
6 [报告]
发表于 2009-04-17 15:27 |只看该作者
有一个问题:PS_FORMAT  *ptr;
赋值的时候是不是应该
*ptr->head = *ps;
麻烦指教一下

论坛徽章:
0
7 [报告]
发表于 2009-04-17 15:40 |只看该作者
不是ptr是PS_FORMAT类型的指针了
ptr->head = *ps  可以

论坛徽章:
0
8 [报告]
发表于 2009-04-17 17:01 |只看该作者
我怎么觉得程序会溢出呢
楼主好像没有给出PS_FORMAT  *ptr 实际指向的空间,但愿楼主的代码里面有分配空间的那一行。。。
您需要登录后才可以回帖 登录 | 注册

本版积分规则 发表回复

  

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

清除 Cookies - ChinaUnix - Archiver - WAP - TOP