矩阵转置与 C++ 中的指针到指针

问题描述

我正在尝试在 C++ 中使用指针到指针转置矩阵,但出现错误:“分段错误('核心'转储)”。我试图在论坛上找到错误并发现在 ma​​trixTrans 函数中,'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 (将#修改为@)