我正在编写此简单代码,用于自己设置矩阵并显示它。当我执行该程序时,它在第一行给出垃圾值。那个怎么样?我的程序有任何错误吗?
#include<iostream>
using namespace std;
void setOneMatrix();
//void getOneMatrix(int mat[6][5]);
int display(int mat[6][5]);
int main() {
int setMat[6][5]={};
setOneMatrix();
display(setMat);
}
void setOneMatrix() {
/*int setMat[6][5] = {1,2,3,4,5,
6,7,8,9,10,
11,12,13,14,15,
16,17,18,19,20,
21,22,23,24,25,
26,27,28,29,30};*/
int setMat[6][5] = {{1,2,3,4,5},
{6,7,8,9,10},
{11,12,13,14,15},
{16,17,18,19,20},
{21,22,23,24,25},
{26,27,28,29,30}};
}
int display(int mat[6][5]) {
int i,j,setMat[6][5];
for(i=0;i<6;i++){
for(j=0;j<5;j++) {
cout << setMat[i][j] << "\t";
}
cout << endl;
}
}
输出:
4665744 4687848 6946296 4257625 0
1 2 3 4 5
6 7 8 9 10
11 12 13 14 15
16 17 18 19 20
21 22 23 24 25
最佳答案
不好意思地说,但是您的整个程序都有未定义的行为!这是我的输出:
-858993460 -858993460 -858993460 -858993460 -858993460
-858993460 -858993460 -858993460 -858993460 -858993460
-858993460 -858993460 -858993460 -858993460 -858993460
-858993460 -858993460 -858993460 -858993460 -858993460
-858993460 -858993460 -858993460 -858993460 -858993460
-858993460 -858993460 -858993460 -858993460 -858993460
您很幸运,除了第一行之外,这些数字都已打印出来。那不应该发生的,请看我的输出。
一些事实:
setMat
中的main
仅包含0
。setOneMatrix
不会在setMat
中初始化main
,它只是初始化另一个setMat
。此功能基本上不执行任何操作。displayMath
更好一些,因为您将setMat
传递给它,但是该函数甚至使用了setMat
,它只是创建了另一个数组mat
并打印出该数组。该数组未初始化,因此包含垃圾值。因此,当您打印时,您什么都可以得到!
(它也不返回
int
,因此程序已经格式错误,为什么要这么做?只需使其返回void
。)