C++ 在我的程序中使用for循环打印矩阵的错误

C++ 在我的程序中使用for循环打印矩阵的错误,c++,visual-studio-2010,for-loop,printing,fileoutputstream,C++,Visual Studio 2010,For Loop,Printing,Fileoutputstream,我编写了以下代码以在int main()中测试 intmain(){ int*p1=findMatrix大小(“inputmatrix.txt”,“A”);//函数获取矩阵大小 问题在于从findMatrix和normal乘法函数获得结果的方式:它们将计算结果保存在堆栈中,并返回指向它的指针,但在这些函数完成工作后,堆栈很快就会被破坏。重新实现这些函数,以便内存中的位置在这些函数之外有效例如, int p1[2]; findmatrixsize("inputmatrix.txt","A", p1

我编写了以下代码以在
int main()中测试

intmain(){
int*p1=findMatrix大小(“inputmatrix.txt”,“A”);//函数获取矩阵大小

问题在于从findMatrix和normal乘法函数获得结果的方式:它们将计算结果保存在堆栈中,并返回指向它的指针,但在这些函数完成工作后,堆栈很快就会被破坏。重新实现这些函数,以便内存中的位置在这些函数之外有效例如,

int p1[2];
findmatrixsize("inputmatrix.txt","A", p1)
并将FindMatrix Size中的结果放入最后一个参数中,例如

void findmatrixsize(const char* fileName, const char* matrixName, int* result)
{
  // routine
  result[0] = someValue1;
  result[1] = someValue2;
}

我们不知道
findMatrix
normal乘法
做了什么

但是,如果它们按照我认为的那样做(并且我认为它们返回指向其本地数据的指针),则
p1
p2
C
引用的对象将共享存储


检查是否
p1==p2

到底什么不起作用?它编译,但for-loop打印部分没有写入txt。当我将其更改为标准打印cout(不仅仅是单行,我指的是整个方法)时,我在终端中也看不到它们。但是正如我上面提到的,当我更改p[0]p[1]时对于3,它是有效的,这意味着我可以在txt或TERMINAL中看到它们对于您的信息,您可以在这里看到整个代码:它很长,这就是为什么我没有将它们全部放在这里。这是输入文件:是的,正如我所期望的。
Asize
是一个本地数组,
return Asize
返回指向其零元素的指针但是函数返回后,
Asize
的存储就会被释放。指针仍然指向堆栈的某个部分,该部分很快就会被覆盖。将指针返回到本地数据总是一个坏主意。
void findmatrixsize(const char* fileName, const char* matrixName, int* result)
{
  // routine
  result[0] = someValue1;
  result[1] = someValue2;
}