一个TC2的问题

gyyggyy 2001-11-30 09:24:30
main()
{
struct temp
{
float gyy;
};
struct temp *p;
scanf("%f",&p->gyy);
printf("%f",p->gyy);
}
为什么在程序运行时系统会提示一些东西,具体的提示内容我忘了.
提示完就结束程序运行了.如果将gyy改为整形,程序就能正常运行了,为什么啊?
...全文
113 10 打赏 收藏 转发到动态 举报
写回复
用AI写文章
10 条回复
切换为时间正序
请发表友善的回复…
发表回复
gyyggyy 2002-01-03
  • 打赏
  • 举报
回复
asdf
yug 2001-12-01
  • 打赏
  • 举报
回复
首先,你直接用指针当然是不对的了。
其实,这里还有个问题,
struct temp
{
float gyy;
};
struct temp p;
scanf("%f",&p.gyy);

上面这句是得不到正确结果的,
这是tc2.0的一个bug(发现这个问题已经是很多年前的事了,还好还有点印象),
用C++就可以了。


gyyggyy 2001-11-30
  • 打赏
  • 举报
回复
我如何给大家分啊?
njbfy 2001-11-30
  • 打赏
  • 举报
回复
main()
{
struct temp
{
float gyy;
};
struct temp p;
scanf("%f",&p.gyy);
printf("%f",p.gyy);
}
xming076 2001-11-30
  • 打赏
  • 举报
回复
安全起见,程序最后使用free(p);以释放前面分配的内存空间
xming076 2001-11-30
  • 打赏
  • 举报
回复
试一下:
main()
{
struct temp{
flost gyy;
};

struct temp *p;
p = (struct temp *)malloc(sizeof(struct temp));
scanf("%f",&p->gyy);
printf("%f",&p->gyy);
}
halfdream 2001-11-30
  • 打赏
  • 举报
回复
你没有为输入的数分配内存.改成整形还是不对.
如果是在32保护模式下运行,则是个非法内存访问之类的异常.

main()
{
struct temp
{
float gyy;
};
struct temp A; //Added
struct temp *p;
p=&A; //Added
scanf("%f",&(p->gyy)); //changed
printf("%f",p->gyy);
}

njbfy 2001-11-30
  • 打赏
  • 举报
回复
未给结构分配内存,gyy为整型也是不对的,只是运行没出错吧了
改为下面的试试.
main()
{
struct temp
{
float gyy;
};
struct temp p;
scanf("%f",&p->gyy);
printf("%f",p->gyy);
}

wolfzhu 2001-11-30
  • 打赏
  • 举报
回复
只定义指针没有实例!!
wolfzhu 2001-11-30
  • 打赏
  • 举报
回复
只定义指针没有实例!!

33,028

社区成员

发帖
与我相关
我的任务
社区描述
数据结构与算法相关内容讨论专区
社区管理员
  • 数据结构与算法社区
加入社区
  • 近7日
  • 近30日
  • 至今
社区公告
暂无公告

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