#include // Assuming this is aligned itself on a 4 byte boundary struct pizza_t { char size[10]; //Offset 0 //2 bytes padding int price_cents; //Offset 12 }; //Size 16 struct pizza_t pizza_options[3] = { {"small", 300}, {"medium", 550}, {"large", 800} }; void print_pizza_t(struct pizza_t *pizza, int increase_cents); int main(void) { printf("The available pizza options are:\n"); printf("Classic:\n"); main_loop_init: int i = 0; main_loop_cond: if (i >= 3) goto main_loop2_init; //while (i < 3) { main_loop_body: print_pizza_t(&pizza_options[i], 0); main_loop_inc: i = i + 1; goto main_loop_cond; main_loop2_init: i = 0; printf("With extra toppings:\n"); main_loop2_cond: if (i >= 3) goto main_loop_end; //while (i < 3) { main_loop2_body: print_pizza_t(&pizza_options[i], 100); main_loop2_inc: i = i + 1; goto main_loop2_cond; main_loop_end: return 0; } void print_pizza_t(struct pizza_t *pizza, int increase_cents) { printf("Size: "); printf("%s", pizza->size); printf(", price: "); printf("%d",pizza->price_cents+increase_cents); printf(" cents\n"); }