在int数组上尾随零

时间:2017-04-23 10:09:48

标签: c++

我正在尝试打印出类型为int的四维数组的内容。但是,输出是正确的,但有一些尾随的零,我不理解它们的来源。有线索的人吗?

源代码:

int main(int argc, char **argv) {
int i,j,k,m;

int nmArrays[5][5][5][5]= {{1,2,3,4,5},{6,7,8,9,10},{11,12,13,14,15},{16,17,18,19,20}};

for(i=0;i<5;i++){//subArray 0,0

    for(j=0;j<5;j++){//subArray 1,0

        for(k=0;k<5;k++){//subArray 2,0

            for(m=0;m<5;m++){//subArray 3,0

            cout<<nmArrays[i][j][k][m];
              }  
          }

    }

cout<<""<<std::endl;
}

getchar();

}

输出:

12345000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000
678910000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000
1112131415000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000
1617181920000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000
00000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000

2 个答案:

答案 0 :(得分:-1)

  

有线索的人吗?

你正在做的是初始化4*5 = 20元素(理论上它是一个2D矩阵,但在内存中它总是一个数组)。 虽然您有5*5*5*5= 625 elements)矩阵。

因此,您未初始化的所有位置都会被0填充。

答案 1 :(得分:-2)

{{1,2,3,4,5},{6,7,8,9,10},{11,12,13,14,15},{16,17,18,19,20}};是一个二维数组,更具体地说它是5X5矩阵。

您要找的是5x5x5x5数组。

更多洞察力:您的第一个初始化列表{1,2,3,4,5}用于填充大小为5x5x5的第一个子数组,并填充零,因为您只提供了第一个{{1} }条目,而不是5值。 类似的是其余子阵列的行为。

为简单起见,假设您的125数组为5x5x5x5。所以相应地,你的初始化列表用于初始化用零填充的每个子数组。