指向自创建结构的双指针 - 编译器显示 OK - 程序中止
现在,我正在准备考试(大学)并考虑创建自己的练习。 我想到编写一个帕斯卡三角形,其中矩阵中的位置(使用指向结构的双指针实现)填充了我的结构类型的对象。
这是我的代码:
#include <iostream>
#include <string>
using namespace std;
int main(){
struct Ferrari{
string Modell;
int Baujahr;
int PS;
};
Ferrari **matrix = new Ferrari* [5];
for(int i=0; i<5; i++){
matrix[i]=new Ferrari[i+1];
}
matrix[0][0].Modell="F40";
matrix[0][0].Baujahr=2012;
matrix[0][0].PS = 210;
matrix[1][0].Modell=matrix[1][1].Modell="Enzo";
matrix[1][0].Baujahr=matrix[1][1].Baujahr=2000;
matrix[1][0].PS=matrix[1][1].PS=210;
for(int i=2; i<5; i++){
for(int j=0; j<=i; j++){
matrix[i][j].Modell=matrix[i-1][j].Modell + matrix[i-1][j-1].Modell;
matrix[i][j].Baujahr=matrix[i-1][j].Baujahr + matrix[i-1][j-1].Baujahr;
matrix[i][j].PS=matrix[i-1][j].PS + matrix[i-1][j-1].PS;
}
}
for(int i=0; i<5; i++){
for(int j=0; j<=i; j++){
cout << matrix[i][j].Modell << " ";
cout << matrix[i][j].Baujahr << " ";
cout << matrix[i][j].PS << " ";
}
cout << endl;
}
system("pause");
return 0;
}
该程序做了很多奇怪的事情,但不是它应该做的。 编译器说可以,但是当我运行它时,它给了我错误代码: Testerei.exe 中 0x72f7ae7a 处出现未处理的异常:0xC0000005:读取位置 0xabababab 时发生访问冲突。
此时,不知怎的,我的变量 i 的值为 -33651 ...
你能告诉我代码的问题出在哪里吗?我知道,该程序没有真正的功能...我只是想练习一下双指针、结构、字符串(字符串的添加...)。
先感谢您!
最好的问候,
曼努埃尔
Right now, I prepare for an exam (university) and thought of creating my own exercises.
I thought of programming a pascal triangle where the places in the matrix (implemented with double pointer to the struct) are filled with Objects of the type of my struct.
Here's my code:
#include <iostream>
#include <string>
using namespace std;
int main(){
struct Ferrari{
string Modell;
int Baujahr;
int PS;
};
Ferrari **matrix = new Ferrari* [5];
for(int i=0; i<5; i++){
matrix[i]=new Ferrari[i+1];
}
matrix[0][0].Modell="F40";
matrix[0][0].Baujahr=2012;
matrix[0][0].PS = 210;
matrix[1][0].Modell=matrix[1][1].Modell="Enzo";
matrix[1][0].Baujahr=matrix[1][1].Baujahr=2000;
matrix[1][0].PS=matrix[1][1].PS=210;
for(int i=2; i<5; i++){
for(int j=0; j<=i; j++){
matrix[i][j].Modell=matrix[i-1][j].Modell + matrix[i-1][j-1].Modell;
matrix[i][j].Baujahr=matrix[i-1][j].Baujahr + matrix[i-1][j-1].Baujahr;
matrix[i][j].PS=matrix[i-1][j].PS + matrix[i-1][j-1].PS;
}
}
for(int i=0; i<5; i++){
for(int j=0; j<=i; j++){
cout << matrix[i][j].Modell << " ";
cout << matrix[i][j].Baujahr << " ";
cout << matrix[i][j].PS << " ";
}
cout << endl;
}
system("pause");
return 0;
}
The Programm does many weird things, but not what it should do.
Compiler says ok, but when I run it it gives me the error code:
Unhandled exception at 0x72f7ae7a in Testerei.exe: 0xC0000005: Access violation reading location 0xabababab.
At that point, somehow my variable i has the value -33651 ...
Could you maybe tell me where the problem of the code is? I know, the programm has no real function...I just wanted to practise a bit with double pointers, structs, strings (addition of strings...).
Thank you in advance!
Best regards,
Manuel
如果你对这篇内容有疑问,欢迎到本站社区发帖提问 参与讨论,获取更多帮助,或者扫码二维码加入 Web 技术交流群。
绑定邮箱获取回复消息
由于您还没有绑定你的真实邮箱,如果其他用户或者作者回复了您的评论,将不能在第一时间通知您!
发布评论
评论(1)
这是一个错误:
当
j = 0
时,尝试访问索引为-1
的数组。This a bug:
as an attempt is being made to access an array with an index of
-1
whenj = 0
.