求助,vc下结构体的一个简单问题

来源:百度知道 编辑:UC知道 时间:2024/06/15 15:47:39
这是一个超级简单的程序
#include <stdio.h>
struct student
{
int num;
char sex;
}*p;
void main()
{
p->num=1;
p->sex='m';
printf("%d,%c",p->num,p->sex);
}
为什么在vc++下运行总是报错
编译,构建都可以通过,就是运行时报错

#include <stdio.h>
struct student
{
int num;
char sex;
}*p;
void main()
{p=new (struct student);//要事先给指针分配一个确定的空间
p->num=1;
p->sex='m';
printf("%d,%c",p->num,p->sex);
}

不事先分配的话就可能指向一个不可引用的空间,因此会报错

p没有被赋初值,所以p = 0;
所以p -> num 相当于 0 -> num是错的