问题描述
我正在尝试在 C++ 中使用指针到指针转置矩阵,但出现错误:“分段错误('核心'转储)”。我试图在论坛上找到错误并发现在 matrixTrans 函数中,'puntero_trans = new int *[nCol];'行和旁边的 for 循环,我不得不转到 getData 函数。我真的不知道为什么会这样。谢谢你的时间。我的代码如下:
#include <iostream>
void getData();
void matrixTrans(int **,int **,int,int);
void showData(int **,int);
//Global variables
int **puntero_matrix = nullptr,**puntero_trans;
int nRaws,nCol;
int main() {
getData();
matrixTrans(puntero_matrix,puntero_trans,nRaws,nCol);
showData(puntero_trans,nCol);
//Flushing memory...
for (int i = 0; i < nRaws; ++i) {
delete[] puntero_matrix[i];
}
for (int i = 0; i < nCol; ++i) {
delete[] puntero_trans[i];
}
delete[] puntero_matrix;
delete[] puntero_trans;
std::cin.get();
return 0;
}
void getData() {
std::cout << "Please enter the number of raws:"; std::cin >> nRaws;
std::cout << "Please enter the number of columns: "; std::cin >> nCol;
puntero_matrix = new int* [nRaws];
for (int i = 0; i < nRaws; ++i) {
puntero_matrix[i] = new int[nCol];
}
for (int i = 0; i < nRaws; ++i) {
for (int j = 0; j < nCol; ++j) {
std::cout << "Please enter value for [" << i << "][" << j << "]: "; std::cin >> *(*(puntero_matrix + i) + j);
}
}
}
void matrixTrans(int **puntero_matrix,int **puntero_trans,int nRaws,int nCol) {
puntero_trans = new int *[nCol];
for (int i = 0 ; i < nCol; ++i) {
puntero_trans[i] = new int[nRaws];
}
for (int i = 0; i < nRaws; ++i) {
for (int j = 0; j < nCol; ++j) {
*(*(puntero_trans + j) + i) = *(*(puntero_matrix + i) + j);
}
}
}
void showData(int **puntero_trans,int nCol) {
for (int i = 0; i < nCol; ++i) {
for (int j = 0; j < nRaws; ++j) {
std::cout << *(*(puntero_trans + i) + j) << " ";
}
std::cout << std::endl;
}
}
解决方法
暂无找到可以解决该程序问题的有效方法,小编努力寻找整理中!
如果你已经找到好的解决方法,欢迎将解决方案带上本链接一起发送给小编。
小编邮箱:dio#foxmail.com (将#修改为@)