写入位置时发生访问冲突怎么处理


#include <iostream>
#include<string.h>
using namespace std;
struct student
{
 char *num;
 int  score;
};
struct student *max(struct student *s[],int n){
 int i,imax=0;
 struct student *head;
 for(i=0;i<n;i++){
  if(s[i]->score>s[imax]->score)
   imax=i;
 }
  head=s[imax];
  return head;
}
int main()
{
 struct student *s[100],*p;
 int i;
 for(i=0;i<100;i++){
  s[i]->num=new char[10];
  cin>>*(s[i]->num);
  cin>>s[i]->score;
 }
 p=max(s,100);
 cout<<"最高分学生信息"<<endl;
 cout<<"学号"<<*(p->num)<<endl;
 cout<<"分数"<<p->score;
 system ("pause");
 return 0;
}

这个代码总是显示如图所示的问题,求一个解释

img

在这一行前面加上
s[i] = new student;

未分配内存空间,都是空指针啊,使用指针就要new student,或者用数组,student s[100]