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
。