int数组尾随零

问题描述:

我想输出一个四维的int类型数组的内容。然而,输出是正确的,但有一些尾随的零,我不了解它们的来源。任何人都有线索?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 
+1

你期望输出什么?你的数组有625个条目;您只为其中的20个设置非零值。所以你应该在输出中得到605尾随零。 –

+2

您有一个5 * 5 * 5 * 5元素的数组,但只能用4 * 5显式值进行初始化。 –

+1

该数组包含625个值,并且您只给出20个值。其余部分默认设置为零。 –

{{1,2,3,4,5},{6,7,8,9,10},{11,12,13,14,15},{16,17,18,19,20}};是2 d阵列,更具体地它是5X5矩阵。

你在找什么是5x5x5x5数组。

更多的见解:你的第一个初始化列表{1,2,3,4,5},用于填充大小5x5x5的第一子阵列和补零,因为你只提供第一5项,不125值。 类似的是其余子阵列的行为。

为简单起见,假设您的5x5x5x5数组为{ 5x5x5 subaary no 0,5x5x5 subaary no 1,5x5x5 subaary no 2,5x5x5 subaary no 3,5x5x5 subaary no 4}。所以相应地,您的初始化程序列表用于初始化用零填充的每个子数组。

+0

不,它是数字列表用逗号分隔并用大括号分隔。 'nmArrays'是数组,它实际上是4维的。 (好吧,我们将数组描述为二维数组等)。 –

+0

@ M.M,我的朋友在C++中没有真正的内在列表。想想它如何奠定在记忆中! – v78

+2

支撑列表根本不放在内存中。只有'int nmArrays [5] [5] [5] [5]'的声明指定了内存布局。然后,初始化程序的列表适合该内存布局。该列表没有任何内部布局。 –

任何人都有线索?

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

所以,你没有初始化的所有位置都被0填充。

+0

你应该编辑你的其他答案,而不是删除它并发布另一个相同的 –

+0

@granmirupa谢谢。 – m88

+0

@ M.M,这是没有解释答案有什么问题而不合格的原因? – granmirupa