 Let's take the program from the preceding video and add a function that displays the information in a food structure. We'll call this void function, display food, and it's going to take one parameter, a food structure. Just like every other parameter you've seen before, you start with the data type, struct food, and give it a name. We'll call it item. The body of the function prints out the structure information. And to fill in the placeholders, we take the members of our data structure. Item.weight, item.servingSize, and item.price. We're going to call it in the main function. We'll print the brand name, call display food for brand one, and then indent the next line to line up nicely. And we'll do the same for brand two, call display food and pass brand two as our parameter, and line everything up. And finally, brand three. Let's build and run, and there's our function at work. What happens behind the scenes when you pass a structure? Like integers and doubles, functions get a copy of the original structure. Call by value is universal in C. This means we cannot write a function like this. When we change the price member inside the function, the copy gets changed. But when the function ends, the local variable disappears and the original remains untouched. That means we have to do the same thing we did with integers and doubles. We have to return a new value. Let's go through this step by step. When the function is called, the argument is copied into the parameter. It gets changed, and here's the key point. It gets returned. That means that the whole right-hand side works out to this new structure, and that gets reassigned to brand one, replacing its old value. And that's how you pass structures to a function and return structures from a function.