[help]请大家帮我决一个基础的问题
#include<stdio.h>#include<conio.h>
#define NULL 0
typedef struct
{char name[25];
long num;
float score;
}elemtype;
main( )
{ elemtype *p;
scanf("%f",&p->score);
printf("\n%f",p->score);
getch();
}
这个程序在win-tc中编译成功,但运行时就马上关闭,为什么呢?
----------------解决方案--------------------------------------------------------
p未初始化就使用,导致非法访问内存
----------------解决方案--------------------------------------------------------
编译成功?
----------------解决方案--------------------------------------------------------
大家认真比较一下以下两个程序:
#include<stdio.h>
#include<conio.h>
typedef struct
{long score;
}Node;
main()
{Node *p,a;
p=&a;
scanf("%ld",&(*p).score);
printf("\n%ld",p->score);
getch();
}
-----------------------------
#include<stdio.h>
#include<conio.h>
typedef struct
{float score;
}Node;
main()
{Node *p,a;
p=&a;
scanf("%f",&(*p).score);
printf("\n%f",p->score);
getch();
}
你会发现长整型的可以成功运行,而实型的却不行.
----------------解决方案--------------------------------------------------------
这种情况是TC特有的,看看置顶的帖子里有解决办法,让TC知道你要进行实型转换就可以解决这个问题了
----------------解决方案--------------------------------------------------------
TC的bug
----------------解决方案--------------------------------------------------------
置顶帖里的哪张,我找不到呀,还有那句"TC的bug"是什么意思哦
----------------解决方案--------------------------------------------------------
http://bbs.bc-cn.net/bbs/dispbbs.asp?boardID=5&ID=18233&page=1 看四楼的帖子
----------------解决方案--------------------------------------------------------