| 网站首页 | 业界新闻 | 小组 | 威客 | 人才 | 下载频道 | 博客 | 代码贴 | 在线编程 | 编程论坛
欢迎加入我们,一同切磋技术
用户名:   
 
密 码:  
共有 678 人关注过本帖
标题:指向结构类型的数据指针变量如何理解这段程序谢谢
只看楼主 加入收藏
keyu886
Rank: 1
等 级:新手上路
帖 子:12
专家分:0
注 册:2011-3-3
收藏
 问题点数:0 回复次数:9 
指向结构类型的数据指针变量如何理解这段程序谢谢

#define uint unsigned int
#define uchar unsigend char
struct msg1                  
{
  uint lnk;
  uchar len,fig,god,sdt,cmdstuff;
};                              //定义了一个结构体类型 msg1

struct msg1 *msg;              //定 义了结构体指针变量msg,该指针指向结构体类型msg1?        

void msega (struct msg1*m);

 main()
{
  ucar stuff;
  msg->len=8;
  msg->flg=0;
  msg->nod=0;
  msg->sdt=0x12;
  msg->cmd=0;
  msg->stuff=stuff;
 msega(msg)
}
这段程序来自一本书上:我有几个问题
 第一?结构类型的指针  他这个指针只是指向了一个结构类型  这个结构类型并没有结构变量  是不是有问题.如何理解这段程序
第二他这里实际定义了两个指针变量吧,第一个是MSG,第二个是M
程序是如何传递信息的?

[ 本帖最后由 keyu886 于 2011-5-27 18:57 编辑 ]
搜索更多相关主题的帖子: 如何 结构体 
2011-05-27 16:58
laoyang103
Rank: 19Rank: 19Rank: 19Rank: 19Rank: 19Rank: 19
来 自:内蒙古包头
等 级:贵宾
威 望:19
帖 子:3082
专家分:11056
注 册:2010-5-22
收藏
得分:0 
你这程序是书上的?   结构体关键字是struct  无符号是 unsigned

第一个问题  确实没有变量 你的指针没有指向  所以要让它有指向 或者指向空

第二个你只定义了一个 全局的 另一个是函数的参数定义

第三个  你只要会用就可以了  怎么传递的我也不知道

                                         
===========深入<----------------->浅出============
2011-05-27 17:05
c564794923
Rank: 2
等 级:论坛游民
帖 子:64
专家分:95
注 册:2011-5-25
收藏
得分:0 
你struct写错了

还有接楼上.

  msg->len=8;
  msg->flg=0;
  msg->nod=0;
  msg->sdt=0x12;
  msg->cmd=0;
  msg->stuff=stuff;
这样一个一个对应直接传递给
main()中的len,fig,god,sdt,cmdstuff

貌似没那么难理解
2011-05-27 18:38
keyu886
Rank: 1
等 级:新手上路
帖 子:12
专家分:0
注 册:2011-3-3
收藏
得分:0 
不好意思struct的确是我写错了,这的确是书上的
3楼你能不能详细写一下它是如何一个个传过去的吗?
我还是有点不理解
2011-05-27 18:59
keyu886
Rank: 1
等 级:新手上路
帖 子:12
专家分:0
注 册:2011-3-3
收藏
得分:0 
晕不看不知道,一看我那段程序写错了很多东西,真是个粗心人啊
现在改了下重新发上来
为了运行下程序
我把在KEIL(51)运行下,编译后出了两个注意
#include<reg51.h>
#define uint unsigned int
#define uchar unsigned char
struct msg1                  
{
  uint lnk;
  uchar len,fig,god,sdt,cmd,stuff;
};                              //定义了一个结构体类型 msg1

struct msg1 *msg;              //定 义了结构体指针变量msg,该指针指向结构体类型msg1?        

void msega (struct msg1*m);

 int main()
{
  uchar stuff;
  msg->len=8;
  msg->fig=0;
  msg->god=0;
  msg->sdt=0x12;
  msg->cmd=0;
  msg->stuff=stuff;
  msega(msg);
 
 }
2011-05-27 19:21
keyu886
Rank: 1
等 级:新手上路
帖 子:12
专家分:0
注 册:2011-3-3
收藏
得分:0 
我想弄懂这个结构体指针函数是如何传递数据的
2011-05-27 19:22
jacksongod
Rank: 2
等 级:论坛游民
帖 子:32
专家分:82
注 册:2011-5-18
收藏
得分:0 
struct msg1 *msg;           msg1 是类型  msg是符号 跟 int *a  一样
2011-05-27 19:27
keyu886
Rank: 1
等 级:新手上路
帖 子:12
专家分:0
注 册:2011-3-3
收藏
得分:0 
这个程序我在51开发环境里编译了下,提出了两个警告
linking...
*** WARNING L1: UNRESOLVED EXTERNAL SYMBOL
    SYMBOL:  _MSEGA
    MODULE:  NEW0001.obj (NEW0001)
*** WARNING L2: REFERENCE MADE TO UNRESOLVED EXTERNAL
    SYMBOL:  _MSEGA
    MODULE:  NEW0001.obj (NEW0001)
    ADDRESS: 0834H
Program Size: data=13.0 xdata=0 code=103
"12" - 0 Error(s), 2 Warning(s).我觉得程序还是有问题
2011-05-27 19:50
c564794923
Rank: 2
等 级:论坛游民
帖 子:64
专家分:95
注 册:2011-5-25
收藏
得分:0 
这个不是很好说,是通过内存地址传送
结构体指针传送是指针传送一种,不要想的那么难
希望对你有帮助
2011-05-27 23:50
c564794923
Rank: 2
等 级:论坛游民
帖 子:64
专家分:95
注 册:2011-5-25
收藏
得分:0 
这个不是很好说,是通过内存地址传送
结构体指针传送是指针传送一种,不要想的那么难
希望对你有帮助
2011-05-27 23:53
快速回复:指向结构类型的数据指针变量如何理解这段程序谢谢
数据加载中...
 
   



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

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