Warning: file_get_contents(/data/phpspider/zhask/data//catemap/6/cplusplus/137.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
C++ 将空矩阵传递给函数_C++_Pointers_Matrix - Fatal编程技术网

C++ 将空矩阵传递给函数

C++ 将空矩阵传递给函数,c++,pointers,matrix,C++,Pointers,Matrix,我试图将一个无量纲的矩阵传递给一个函数,并填充数据。以下是一个例子: #include <iostream> #include <stdlib.h> using namespace std; void fun(double **matrix); int main(void) { double **matrix; fun(matrix); for(int i = 0; i < 10; i ++) { cout

我试图将一个无量纲的矩阵传递给一个函数,并填充数据。以下是一个例子:

#include <iostream>
#include <stdlib.h>

using namespace std;

void fun(double **matrix);

int main(void)
{
    double **matrix;

    fun(matrix);

    for(int i = 0; i < 10; i ++)
    {
        cout << "matrix = " << matrix[i][0] << "\t" << matrix[i][1] << endl;

    }
 }


void fun(double **matrix)
{

    int rowCount = 10;
    int colCount = 2;

    matrix = new double*[rowCount];
    for(int i = 0; i < rowCount; ++i)
        matrix[i] = new double[colCount];

    for(int i = 0; i < rowCount; i ++)
    {
        matrix[i][0] = 3.;
        matrix[i][1] = 4.;
    } 
}
#包括
#包括
使用名称空间std;
虚无乐趣(双**矩阵);
内部主(空)
{
双**矩阵;
乐趣(矩阵);
对于(int i=0;i<10;i++)
{

cout您的程序失败,因为fun分配内存,但不会将新分配的矩阵数组返回给main。通过返回值比通过参数更容易做到这一点:

double** fun() {
  // ...
  double** matrix = new double*[...];
  // ...
  return matrix;
}

int main() {
  double** matrix = fun();
  // ...
}

有一百万种其他方法可以做到这一点(通过将一个double***传递到fun,或者一个引用,或者通过使用某种对象等)。选择你最喜欢的。

首先,如果你有一个指针,它应该指向某个东西,所以为了不出现警告,只需使用nullptr初始化它。第二件事是,你应该返回一个指向指针的指针。我修复了你的代码,这样你就可以看到你犯了什么错误

#include <iostream>
#include <stdlib.h>

using namespace std;
double **fun(double **matrix);

int main(void)
{
    double **matrix= nullptr;

    matrix = fun(matrix);

    for (int i = 0; i < 10; i++)
    {
        cout << "matrix = " << matrix[i][0] << "\t" << matrix[i][1] << endl;

    }
    getchar();
    getchar();
}


double **fun(double **matrix)
{

    int rowCount = 10;
    int colCount = 2;

    matrix = new double*[rowCount];
    for (int i = 0; i < rowCount; ++i)
        matrix[i] = new double[colCount];

    for (int i = 0; i < rowCount; i++)
    {
        matrix[i][0] = 3.;
        matrix[i][1] = 4.;
    }
    return matrix;
}
#包括
#包括
使用名称空间std;
双**乐趣(双**矩阵);
内部主(空)
{
双**矩阵=空PTR;
矩阵=乐趣(矩阵);
对于(int i=0;i<10;i++)
{

无法确定错误显示的语句是什么?调用
fun(matrix)
不会以任何方式影响
matrix
。搜索“按值传递参数”和“按引用传递参数”。使用
matrix
类,内部包含
std::vector