我就写一个案例练习,然后运行的时候跳了个异常,多出来一个xmemory文件,显示已引发异常,两种代码都异常
#include <iostream>
using namespace std;
struct student
{
string name;
int sor;
};
struct teacher
{
string name1;
student diao;
student yong;
student xue;
student sheng;
student wu;
};
void printx(struct teacher e)
{
cout << "老师姓名" << e.name1 << "所带学生\n" << e.diao.name << "分数是" << e.diao.sor << "\t" << e.yong.name << "分数是" << e.yong.sor << "\t" << e.xue.name << "分数是" << e.xue.sor << "\t" << e.sheng.name << "分数是" << e.sheng.sor << "\t" << e.wu.name << "分数是" << e.wu.sor << endl;
}
int main() {
string list[3] = { "小明","老t","mishishu"};
teacher a ;
list[0] = a.name1;
a.diao.name = "连杰";
a.diao.sor = 100;
a.yong.name = "ff";
a.yong.sor = 100;
a.xue.sor = 200;
a.xue.name = "gg";
a.sheng.name = "fw";
a.sheng.sor = 1;
a.wu.name = "ww";
a.wu.sor = 66;
teacher b;
list[1] = b.name1;
b.diao.name = "大哈";
b.diao.sor = 20;
b.yong.name = "佳铭";
b.yong.sor = 88;
b.xue.name = "ss";
b.xue.sor = 33;
b.sheng.name = "ll";
b.sheng.sor = 88;
b.wu.name = "xx";
b.wu.sor = 99;
teacher c;
list[2] = c.name1;
c.diao.name = "闲透";
c.diao.sor = 111;
c.yong.name = "wwe";
c.yong.sor = 23;
c.xue.name = "sfer";
c.xue.sor = 29;
c.sheng.name = "feww";
c.sheng.sor = 44;
c.wu.name = "ltt";
c.wu.name = 99999999999999999;
printx(a);
printx(b);
printx(c);
system("pause");
return 0;
}
#include <iostream>
using namespace std;
struct student
{
string name;
int sor;
};
struct teacher
{
string tname;
struct student sarr[5];
};
void pluss(teacher y[], int len)
{
string k = "abcdef";
for (int i = 0; i < len; i++)
{
y[i].tname = "teacher_";
y[i].tname += k[i];
for (int j = 0; j < 5; j++)
{
y[i].sarr[j].name = "学生";
y[i].sarr[j].name += k[j];
y[i].sarr[j].sor = 60;
}
}
}
void printin(teacher y[], int len)
{
for (int i = 0; i < len; i++)
{
cout << "老师姓名" << y[i].tname << endl;
for (int j = 0; j < 5; j++)
{
cout << y[i].sarr[j].name << "分数" << y[i].sarr[j].sor << endl;
}
}
}
int main() {
teacher tarr[3];
pluss(tarr, 3);
printin(tarr, 3);
system("pause");
return 0;
}
单步调试,看代码崩溃到哪行了,再查看一下崩溃时各变量的值
这个对于有时候还是有点奔溃的,还是得整个改掉,应该是越界了,把数组开大点,放在全局变量试试
记得采纳哦
请把所有的代码发出来看看,是不是代码问题。另外可以开机重启试试看
单步调试,看代码崩溃到哪行了,再查看一下崩溃时各变量的值
在哪里异常,加断点慢慢调试。
如果是下面的代码,那就没有异常:
#include <iostream>
using namespace std;
struct student
{
string name;
int sor;
};
struct teacher
{
string tname;
struct student sarr[5];
};
void pluss(teacher y[], int len)
{
string k = "abcdef";
for (int i = 0; i < len; i++)
{
y[i].tname = "teacher_";
y[i].tname += k[i];
for (int j = 0; j < 5; j++)
{
y[i].sarr[j].name = "学生";
y[i].sarr[j].name += k[j];
y[i].sarr[j].sor = 60;
}
}
}
void printin(teacher y[], int len)
{
for (int i = 0; i < len; i++)
{
cout << "老师姓名" << y[i].tname << endl;
for (int j = 0; j < 5; j++)
{
cout << y[i].sarr[j].name << "分数" << y[i].sarr[j].sor << endl;
}
}
}
int main() {
teacher tarr[3];
pluss(tarr, 3);
printin(tarr, 3);
system("pause");
return 0;
}
关掉那个弹出来的文件,然后保存一下剩下的文件。重新打开一下vs试试看。