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

How To Print Values Stored in an Array

本文关键字:数组 存储 何打印 打印      更新时间:2023-10-16

我正在努力创建一个函数,其中我占6个值(3个字符串,3个int),将这些值存储在数组中,然后以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

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

如果已经回答,则表示歉意。我找不到一个示例,其中数组与用户输入值填充,然后返回显示。

您需要使用[]订阅操作员实际索引数组。同样,打印时,您应该尝试在数组中索引一个元素。由于当您尝试打印数组本身时,编译器将隐式将数组转换为指针,该数组将在打印时将其在该数组中打印第一个元素的内存地址,而不是元素本身。

因此,您可以放弃数组以获取每个数组的第一个值,但是更好的方法是通过您的 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;
}

另外,如果您不想索引它,则可以使用原始方法,但是您必须使用* dereference运算符来取消指针:

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

但是,现在您只需三次打印第一个元素即可。因此,要解决这一点,您需要采用一些指针算术,并增加值,以使元素分别超过第一个元素:

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

所以有些事情要查找: *解开 *订阅 *隐式数组到指针转换