问题原因一般与指针相关,这里第一次遇到一个记录。
代码示例
下面的红色代码是获取一个数组下标,返回int值,直接在if函数里面调用函数searchPerson(abs, name)会出现访问冲突,似乎是堆栈访问保存冲突。
void modifyPerson(Addressbooks* abs)
{
cout << "请输入需要修改的联系人姓名:";
string name;
cin >> name;
if (searchPerson(abs, name) == -1)
{
cout << "该联系人不存在。" << endl;
}
else
{
//姓名
cout << "请输入修改后联系人名字:" << endl;
string name_modify;
cin >> name_modify;
abs->personArray[searchPerson(abs, name)].m_Name = name_modify;
将代码改为:
int ret = searchPerson(abs, name);
if (ret == -1)
{
cout << "该联系人不存在。" << endl;
}
else
{
//姓名
cout << "请输入修改后联系人名字:" << endl;
string name_modify;
cin >> name_modify;
abs->personArray[ret].m_Name = name_modify;
这样不会报错,以后尽量避免在函数或其他语句中嵌套调用函数。