为什么通过定义另一个指针单元格,整个代码停止工作?

Why by defining another pointer cells whole code stops working?

本文关键字:代码 停止工作 单元格 定义 另一个 指针 为什么      更新时间:2023-10-16

我正在尝试将矩阵"a"转置为"b",但在通过输入"//"来定义 b 的行之前,实际上在运行代码时什么也没发生,但之后代码工作直到某个地方......

#include <iostream>
using namespace std;
double **a , **b;
void print(double **);
void ma();
int i , j , d;
int main()
{
d = 2;
a = new double *[d];
for (i = 0 ; i < d ; i++)
{
a [i] = new double [d];
b [i] = new double [d];
}
for (i = 0 ; i < d ; i++)
for (j = 0 ; j < d ; j++)
a[i][j] = i + j ;
print(a);
ma();
print(b);
delete []a;
delete []b;  
}
void ma () {
cout << "here";
for (i = 0 ; i < d ; i++)
for (j = 0 ; j < d ; j++)
b[i][j] = a[j][i];
}
void print (double **a) {
cout << "here";
cout << "nn";
for(i = 0 ; i < d ; i++)
{
for (j = 0 ; j < d ; j++)
cout << "tt" << a[i][j] << "t";
cout << "n";
}
cout << "nn"; 
}

据我所知,你声明了 bdouble **b但从不在代码中调用一个新的?您这样做是为了:

a = new double *[d];

也许这会解决问题?