c++ - 在我的程序中使用for循环打印出矩阵的一个错误

标签 c++ visual-studio-2010 for-loop printing fileoutputstream

我写了下面的代码在int main()中测试

int main() {
int *p1 = findmatrixsize("inputmatrix.txt","A");//A function gets matrix size
cout << p1[0] << endl << p1[1] << endl;
int *p2 = findmatrixsize("inputmatrix.txt","B");
cout << p2[0] << endl << p2[1] << endl;

double **C = normalmultiplication("inputmatrix.txt","A", "B"); 
cout << C[0][0] << endl;

ofstream fout;
const string s="outputmatrix.txt";
fout.open(s);
for(int i=0;i<p1[0];i++){
    for(int j =0;j<p2[1];j++){
        fout << C[i][j] << " ";
    }
    fout<< endl;
}
fout.close();

return 0;
}

除了我执行多阵列打印时,一切正常。这是问题所在:

1.如果我注释掉打印部分,p1[0],p1[1],p2[0],p2[1],C[i][j] 给我完美以及我想要的正确结果。

2.但是,当我使用普通循环打印时,它不起作用。但是,但是,但是,如果我将 for 循环中的 p1[0],p2[1] 更改为具体数字,如 3(当我的矩阵维度为 3 时),它会再次起作用。

3.编译通过,但是for循环打印部分没有写到txt中。当我将它更改为标准打印 cout(不仅是单行,我的意思是整个方法)时,我也无法在终端中看到它们。但正如我上面提到的,当我将 p[0] p[1] 更改为 3 时,它起作用了,这意味着我可以在 txt 或终端中看到它们

我以前从未在C++中遇到过这种奇怪的情况,所以我希望有人能帮助我!

仅供引用,我使用 Visual Studio 2010 作为编译器。

感谢您的帮助!

最佳答案

我们不知道 findmatrixsizenormalmultiplication 做了什么。

但是如果他们按照我认为的去做(我认为他们返回指向他们本地数据的指针),p1p2C 共享存储。

检查是否 p1 == p2

关于c++ - 在我的程序中使用for循环打印出矩阵的一个错误,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/17902451/

相关文章:

C++ 模板类给出没有明显错误的语法错误

c++ - C 中的字符串连接问题

linux - Linux 中如何从 MSI 中获取文件的真实名称(或者,如何读取 MSI 数据库)?

c# - 操作无法完成。无效指针 - VS2010 SP1

javascript - 使用循环 onclick 更改背景颜色

c++ - OpenCV findContours函数问题

c++ - 工作线程如何与主 UI 线程通信?

visual-studio-2010 - Visual Studio 2010 警告编号。我在哪里可以找到它们?

c - 在嵌套 for 循环中间出现段错误

python - 如何有条件地转换 pandas 数据框列