我遇到了一种情况,我需要在函数中对矩阵进行一些数学运算(在编译时它的维数未知,因此我必须将其保存为指针),然后将其等同于到我作为参数传递给函数的指针。在C++中为指针指定指针
该代码每次都会引发分段错误。我这里有一个示例代码:
#include <iostream>
using namespace std;
void assign(int **a)
{
int **A = new int* [3];
int i, j;
for(i = 0; i < 3; i++)
A[i] = new int[3];
for(i = 0; i < 3; i++)
for(j = 0; j < 3; j++)
A[i][j] = 100;
a = A; /* equating the pointers */
}
int main()
{
int **ptr;
assign(ptr); /* Passing my pointer into the function */
cout << ptr[0][0] << endl;
return 0;
}
的代码是在C++中,它不是为我做的函数非void的返回类型的选项。我不想将矩阵保存在行/列主要的正常指针上 - 我需要知道为什么这不起作用。
@Nidish你是否试过编写赋值给一个简单的'int'而不是'int **'的'assign'函数?以相同的方式写下来,并尝试检查赋值之前和之后的值是否有所不同 - http://denniskubes.com/2012/08/20/is-c-pass-by-value-or-reference/ –