Structs
Struct Initialization
A struct initializer fills fields when the value is created.
initializer
The initializer values are copied into the struct fields.
field order
Without designators, initializer values follow the field declaration order.
Struct Initialization
struct_initialization.c
Replay: real traced execution (multi-file project)
#include <stdio.h>
struct Product {
int price;
int count;
};
int main(void) {
int price = 4;
struct Product item = {price, 3};
int total = item.price * item.count;
printf("total=%d\n", total);
return 0;
}
#include <stdio.h>
struct Product {
int price;
int count;
};
int main(void) {
int price = 7;
struct Product item = {price, 3};
int total = item.price * item.count;
printf("total=%d\n", total);
return 0;
}
#include <stdio.h>
struct Product {
int price;
int count;
};
int main(void) {
int price = 9;
struct Product item = {price, 3};
int total = item.price * item.count;
printf("total=%d\n", total);
return 0;
}
price ← 4, item ← (empty), total ← 12
8int main(void) {9 int price→ 4 = 4; //@price=7, 910 struct Product item→ (empty) = {price4, 3};11 int total→ 12 = item.price4 * item.count3;1213 printf("total=%d\n", total12);14 return 0;15}outputtotal=12
price ← 7, item ← (empty), total ← 21
8int main(void) {9 int price→ 7 = 7;10 struct Product item→ (empty) = {price7, 3};11 int total→ 21 = item.price7 * item.count3;1213 printf("total=%d\n", total21);14 return 0;15}outputtotal=21
price ← 9, item ← (empty), total ← 27
8int main(void) {9 int price→ 9 = 9;10 struct Product item→ (empty) = {price9, 3};11 int total→ 27 = item.price9 * item.count3;1213 printf("total=%d\n", total27);14 return 0;15}outputtotal=27