为什么这些结构阵列不打印任何东西?

时间:2015-11-20 14:05:22

标签: c++

我有一个包含两个数组的结构。我正在尝试打印出每个数组的内容,但是当我执行所有操作时,无论字符串是什么,浮点数都是零,无论我打印哪个元素。

#include <iostream>

using namespace std;

struct menuItem
{
    string breakfastItem[7];
    float itemPrice[7];
}dish;

void setMenu()
{
    dish.breakfastItem[0]= "Plain Eggs";
    dish.itemPrice[0]= 1.45;
    dish.breakfastItem[1]= "Bacon and Eggs";
    dish.itemPrice[1]=2.45;
    dish.breakfastItem[2]="Muffin";
    dish.itemPrice[2]=0.99;
    dish.breakfastItem[3]="French Toast";
    dish.itemPrice[3]=1.99;
    dish.breakfastItem[4]="Fruit Basket";
    dish.itemPrice [4]=2.46;
    dish.breakfastItem[5]="Cereal";
    dish.itemPrice[5]=0.69;
    dish.breakfastItem[6]= "Coffee";
    dish.itemPrice[6]=.50;
    dish.breakfastItem[7]="Tea";
    dish.itemPrice[7]=0.75;
}

int main()
{
    cout << dish.breakfastItem[0];
    cout << dish.itemPrice[0];
}

1 个答案:

答案 0 :(得分:2)

首先,为了让setMenu()中的代码运行,您需要调用该函数。

int main()
{
    setMenu();
    cout << dish.breakfastItem[0];
    cout << dish.itemPrice[0];
}

其次

dish.breakfastItem[7]="Tea";
dish.itemPrice[7]=0.75;

在您编写过去的数组时,是未定义的行为。大小为7的数组的索引范围为[0,6]