结构体指针输出问题

郭某爱吃小鱼鱼 2018-11-29 02:18:06
int main(void)
{
char a[] = "AAA";
char b[] = "BBB";
char c[] = "CCC";
char d[] = "DDD";
MES* mes;

mes->fromIP = a;
mes->toIP = b;
mes->Con = c;
mes->En = d;

printf("%s\n",mes->fromIP);

return 1;
}


typedef struct
{
char *fromIP;//发送端的IP地址
char *toIP;//接收端的IP地址
char *En;//消息是否有效标志位
char *Con;//信息内容
}MES;

程序运行结果是什么都没有。。。
...全文
360 11 打赏 收藏 转发到动态 举报
写回复
用AI写文章
11 条回复
切换为时间正序
请发表友善的回复…
发表回复
fx_dev 2018-12-07
  • 打赏
  • 举报
回复
你的指针mes没有初始化,运行时一般会出错(如闪退)。使用指针前,应该先初始化。 初始化指针,可以使其指向相应变量的地址,也可以动态申请内存的方式。 下面在手机上用易历知食软件里的微C程序设计来演示修改后的代码,供参考。 手机上修改后的代码如下图所示: 手机上运行该程序的效果如下图所示:
小猪猪哇 2018-11-30
  • 打赏
  • 举报
回复
楼上正解!!
636f6c696e 2018-11-30
  • 打赏
  • 举报
回复
问题很多,学好基础吧
@风轻云淡_ 2018-11-29
  • 打赏
  • 举报
回复
如果只支持c语言,第一种方法需要改用2楼的写法。

引用 7 楼 @风轻云淡_ 的回复:

MES* mes = new MES; //不要忘了用delete mes释放

mes->fromIP = a;
mes->toIP = b;
mes->Con = c;
mes->En = d;
或者
MES mes;

mes.fromIP = a;
mes.toIP = b;
mes.Con = c;
mes.En = d;

还有一个你的结构体定义应该在main函数上面,不然会报使用未定义类型错误。
@风轻云淡_ 2018-11-29
  • 打赏
  • 举报
回复

MES* mes = new MES; //不要忘了用delete mes释放

mes->fromIP = a;
mes->toIP = b;
mes->Con = c;
mes->En = d;
或者
MES mes;

mes.fromIP = a;
mes.toIP = b;
mes.Con = c;
mes.En = d;

还有一个你的结构体定义应该在main函数上面,不然会报使用未定义类型错误。
英雄@末路 2018-11-29
  • 打赏
  • 举报
回复
要么给指针分配内存,要么不用指针:
MES mes;

mes.fromIP = a;
康笨笨 2018-11-29
  • 打赏
  • 举报
回复
兄弟,你这是指向结构体的指针吗
zenghuasheng 2018-11-29
  • 打赏
  • 举报
回复
没有定义 应该会出现段错误
老马何以识途 2018-11-29
  • 打赏
  • 举报
回复
mes變量都沒分配内存,怎麽可以操作呢。
自信男孩 2018-11-29
  • 打赏
  • 举报
回复
mes是野指针,这样操作很容易出现段错误。
建议使用MES mes; 当然下面的就是->改成.
要么使用
MES *mes = (MES *)malloc(sizeof(MES));
lin5161678 2018-11-29
  • 打赏
  • 举报
回复
mes 野指针
不能->

69,368

社区成员

发帖
与我相关
我的任务
社区描述
C语言相关问题讨论
社区管理员
  • C语言
  • 花神庙码农
  • 架构师李肯
加入社区
  • 近7日
  • 近30日
  • 至今
社区公告
暂无公告

试试用AI创作助手写篇文章吧