为何循环里直接退出?

void person::add(void)        //增加通讯录项函数
{
    person *p;
    cout<<"输入要添加的联系人:"<<endl;
    cout<<"姓名:";
    cin>>p->name;
    cout<<"性别:";          //这后面不执行了,直接press any key to continue
    cin>>p->sex;
    cout<<"地址:";
    cin>>p->address;
    cout<<"电话:";
    cin>>p->phone;
    cout<<"邮政编码:";
    cin>>p->zip;
    cout<<"email:";
    cin>>p->email;
    cout<<"qq:";
    cin>>p->qq;
    cout<<"类别:";
    cin>>p->category;
    cout<<"数据添加成功,按Enter键返回主菜单..."<<endl;
    ++count;
    getchar();
}
int main()//主函数
{
    person *p;
    int choice;
    do
    {
        Displaymenu();
        cout<<"请输入功能选项(输入1-9):";
        cin>>choice;
        switch(choice)
        {
        case 1:
            p->add();
            break;
        case 2:
            p->delete_();
            break;
        case 3:
            p->show();
            break;
        case 4:
            p->search();
            break;
        case 5:
            p->modify();
            break;
        case 6:
            p->Read();
            break;
        case 7:
            p->Write_to_file();
            break;
        case 8:
            p->sort();
            break;
        case 9:
            exit(0);//正常运行并退出程序
        }
        system("cls");
        Displaymenu();
    }while(1);/*while(1),1表示为真,所以表示永远循环下去*/
    system("pause");/*至此功能选择模块结束*/
    return 0;
}

这个指针要实例化,分配内存才能使用。
person *p;
改为
person *p = new person();

首先是person指针没有初始化,其次add函数里你又定义了一个指针p,和main里面的p不是一个阿