指向自创建结构的双指针 - 编译器显示 OK - 程序中止

发布于 2025-01-07 22:40:30 字数 1462 浏览 0 评论 0原文

现在,我正在准备考试(大学)并考虑创建自己的练习。 我想到编写一个帕斯卡三角形,其中矩阵中的位置(使用指向结构的双指针实现)填充了我的结构类型的对象。

这是我的代码:

#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 技术交流群。

扫码二维码加入Web技术交流群

发布评论

需要 登录 才能够评论, 你可以免费 注册 一个本站的账号。

评论(1

肥爪爪 2025-01-14 22:40:30

这是一个错误:

for(int j=0; j<=i; j++){
    matrix[i][j].Modell=matrix[i-1][j].Modell + matrix[i-1][j-1].Modell;

j = 0 时,尝试访问索引为 -1 的数组。

This a bug:

for(int j=0; j<=i; j++){
    matrix[i][j].Modell=matrix[i-1][j].Modell + matrix[i-1][j-1].Modell;

as an attempt is being made to access an array with an index of -1 when j = 0.

~没有更多了~
我们使用 Cookies 和其他技术来定制您的体验包括您的登录状态等。通过阅读我们的 隐私政策 了解更多相关信息。 单击 接受 或继续使用网站,即表示您同意使用 Cookies 和您的相关数据。
原文