如何打印存储在数组中的值

时间:2017-09-12 21:47:37

标签: c++ arrays

我正在创建一个函数,其中我接受6个值(3个字符串,3个整数),将这些值存储在数组中,然后以2对为单位打印出每个值

这就是我所拥有的:

#include <iostream>
#include <string>
using namespace std;

int main()
{
    const int SIZE = 3;
    int time[SIZE] = {};        
    string name[SIZE] = {};     

    for (int a = 0; a < 3; a++)
    {
        cout << "Enter runner name: ";
        getline (cin, name[+1]);        
        cout << "Enter runner time: ";
        cin >> time[+1];
        cin.ignore();
    }

    for (int a = 0; a < 3; a++)
    {
        cout << name << " finished in " << time << "\n";
    }
    return 0;
}

我希望我的输出看起来像这样:

name1 finished in time1
name2 finished in time2
name3 finished in time3

目前,我的输出如下:

0x22fdf0 finished in 0x22fe10
0x22fdf0 finished in 0x22fe10
0x22fdf0 finished in 0x22fe10

如何将输入存储在数组中,然后将这些值输出给用户?

如果已经回答了这个问题,请道歉。我无法找到一个示例,其中数组使用用户输入值填充,然后返回到显示。

1 个答案:

答案 0 :(得分:1)

您需要使用[]下标运算符实际索引数组。同样,在打印时,您应该尝试索引数组中的元素。因为当你试图打印数组本身时,编译器会隐式地将数组转换为指针,当打印时,它将打印该数组中第一个元素的内存地址,而不是元素本身。

因此,您可以取消引用数组以获取每个数组中的第一个值,但更好的方法是使用for循环中的a变量对其进行索引,如下所示:

#include <iostream>
#include <string>
using namespace std;

int main() {
    const int SIZE = 3;
    int time[SIZE] = {};
    string name[SIZE] = {};

    for (int a = 0; a < 3; a++) {
        cout << "Enter runner name: ";
        getline(cin, name[a]);
        cout << "Enter runner time: ";
        cin >> time[a];
        cin.ignore();
    }

    for (int a = 0; a < 3; a++) {
        cout << name[a] << " finished in " << time[a] << "\n";
    }
    return 0;
}

或者,如果您不想对其进行索引,则可以使用原始方法,但是您必须使用*解除引用运算符取消引用指针:

for (int a = 0; a < 3; a++) {
    cout << *name << " finished in " << *time<< "\n";
}

但是,现在你只需要打印第一个元素三次。因此,为了解决这个问题,您需要使用一些指针算法,并将值增加a,以分别将元素0,1和2移过第一个元素:

for (int a = 0; a < 3; a++) {
    cout << *(name + a) << " finished in " << *(time + a)<< "\n";
}

所以要查看一些内容:  *解除  *订阅  *隐式数组到指针转换