我正在尝试打印出类型为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
答案 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
。所以相应地,你的初始化列表用于初始化用零填充的每个子数组。