第二个和第二个最终值在 C++ 中混合在二维数组中



我正在尝试学习代码块上的代码,我正在编写一个代码,在其中输入人们在一个地方的进入和退出时间,然后将其存储在一个数组中,time[entry/exit][personnumber]通过以下代码:

int peo;
cout << "How many entries were registered?" << endl;
cin >> peo;
int k = peo-1;
int time[1][k]; //array people x entry time (at time[0][x]) and exit time (at [1][x])
cout << "Please insert the entry and exit times, without ':' in order" << endl;
for (int i=0; i<=k; i++) { //Assigning values of entry and exit in order for each person
for (int j=0; j<=1; j++) {
cin >> time[j][i];
}

但是,在检查值time[1][0](第二个值(和time[0][k](倒数第二个值(时,它们是相同的。不知何故,代码将它们混合在一起。我尝试创建一个临时整数来分配time[1][0]的值,然后稍后重新分配它,但它进一步弄乱了我的代码。我使用此代码来检查值

for (int i=0; i<=k; i++) {
for (int j=0; j<=1; j++) {
cout << time[j][i] << " [" << j << "]" << "[" << i << "]"  << endl;
}
}

发生了什么事情?

你的数组在第一维中实际上只有一个"行",并且由于一些非常时髦的语法和围绕指针的C++架构 时间[0][k] 和时间 [1][0] 实际上正在查看同一个位置。接下来要解释,但要解决您的问题意图int time[1][k];您应该声明int time[2][k];以获得两个第一维"行"。要访问第一行中的元素 j,因为 C++ 从 0 开始的索引,请使用time[0][j]。对于第二行中的元素 j,请使用time[1][j]

此外,C++ 的从零开始索引属性会导致时间 [0][k] 未定义,因为第二个维度的指示符从 0 到 k-1。

int time[2][k];将初始化以下数组:

索引: 0 ..1 ..2 ....... K-2 K-1

0 ---- [ _ ][ _ ][ _ ] ... [ _ ][ _ ]

1 ---- [ _ ][ _ ][ _ ] ... [ _ ][ _ ]

相关内容

最新更新