2013-12-04 4 views
1

Предположим, что мы имеем:Как передать массив структур в функцию?

struct elements{ 
    string drink_name; 
    double price_per_can; 
    double number_in_machine; 
}; 

struct elements machine[6]; 

И машина заполняется в основной(). Как передать машину в функцию (по ссылке), которая будет использоваться внутри функции?

+2

Рассмотрите возможность использования 'станд :: array' вместо голого массив фиксированной длины. –

ответ

5

Вы можете передать его в качестве ссылки:

void foo(elements (&x)[6]) 
{ 
    x[1].price_per_can = 1.8; 
    x[4].drink_name = "mom's breakfast juice"; 
} 

int main() 
{ 
    elements machine[6]; 
    foo(machine); 
} 
+0

Почему я передаю элементы в foo() вместо машины? – user3064097

+1

Он, вероятно, имел в виду машину. – immibis

+0

@ user3064097: Извините, исправлено. –

1
std::array<elements, 6> machine_c2; 

// Edit: Removed const 
// Edit: Reflect edit by other user 
//  and add consistency with machine.begin() 
void doSomething(std::array<elements, 6>& machine) { 
    std::cout << machine.begin()->drink_name; 
    machine.begin()->drink_name = "Cherry"; 
} 

int main() { 
    machine_c2.begin()->drink_name = "Strawberry"; 
    doSomething(machine_c2); 
    std::cout << machine_c2.begin()->drink_name; 
    return 0; 
} 
+0

Давайте отбросим избыточное ключевое слово 'struct' .. –

Смежные вопросы