回 帖 发 新 帖 刷新版面

主题:请指教!

struct student 
{
 int num;
 float score;
};
void main()
{
 struct student a,*p,*q;
 a.num=10101;
 a.score=95;
 printf("%5.2f\n",a.score);
 q=(struct student *) (& a.score);//把a.score(float)地址强制转换成struct student
 printf("%5.2f\n",(q->score));      为什么输出结果却不对,请各位帮忙指点下,谢谢!
 printf("%d,%d\n",p,q);
}

[em2][em3][em3][em3][em3]

回复列表 (共2个回复)

沙发

你的q本来就是一个指向结构体student的指针 直接 q = &a 就可以了。
从你的程序看来p是一个悬挂指针,所指向的地址是随机的

板凳

[quote]q=(struct student *) (& a.score);//把a.score(float)地址强制转换成struct student[/quote]
你把一个浮点型值强制按照struct student类型来解释,结果凭什么正确啊?实际上此时&q->score已经非法使用内存了

我来回复

您尚未登录,请登录后再回复。点此登录或注册