函数返回值类型为指针,出现段错误。

struct student{
int age;
int sex;
};
int main(){
struct student *p;
p->sex=1;
p->age=20;
struct student *q;
q=p;
/printf("age:%d\n",p->age);
printf("sex:%d\n",p->sex);
/
printf("age:%d\n",q->age);
printf("sex:%d\n",q->sex);
return 0;
}

为何我这样输出printf("age:%d\n",p->age);
printf("sex:%d\n",p->sex);提示段错误,而我再申明一个指针来指向他,这样输出才是对的呢?

修改如下,供参考:

#include<stdio.h>
struct student{
       int age;
       int sex;
};
int main()
{
     struct student *p;//p 这里只是一个指针
     p = (struct student *)malloc(sizeof(struct student));
     p->sex=1;
     p->age=20;
     struct student *q;
     q=p;
     printf("age:%d\n",p->age);
     printf("sex:%d\n",p->sex);
     printf("age:%d\n",q->age);
     printf("sex:%d\n",q->sex);
     
     return 0;
}

你这指针没有指向struct student的对象

请问你的p指向的是个什么东西 ==、

一个指针必须要指向一个同类型的变量才能用