我正在尝试学习代码块上的代码,并且正在做一个代码,其中我在一个地方输入人们的出入时间,然后通过以下代码将其存储在数组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;
}
}
发生了什么事?
答案 0 :(得分:0)
您的数组在第一个维度上实际上只有一个“行”,并且由于一些非常时髦的语法和C ++架构,围绕指针time [0] [k]和time [1] [0]的指针实际上正在观察同一地点。遵循以下说明,但为了解决问题而不是int time[1][k];
,应声明int time[2][k];
以获得两个第一维“行”。由于C ++从0开始索引,因此要访问第一行中的元素j,请使用time[0][j]
。对于第二行中的元素j,使用time[1][j]
。
另外,由于第二维的索引从0到k-1,C ++的indexing-from-zero属性使time [0] [k]不确定。
int time[2][k];
将初始化以下数组:
索引:0 ..1 .. 2 ....... k-2 k-1
0 ---- [_] [_] [_] ... [_] [_]
1 ---- [_] [_] [_] ... [_] [_]