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

时间:2018-06-21 14:23:32

标签: c++ arrays database multidimensional-array codeblocks

我正在尝试学习代码块上的代码,并且正在做一个代码,其中我在一个地方输入人们的出入时间,然后通过以下代码将其存储在数组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;
    }
}

发生了什么事?

1 个答案:

答案 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 ---- [_] [_] [_] ... [_] [_]