A struct declaration groups related fields under one type name.

struct type `struct Point` describes a record with named fields.
fields Each field stores one part of the grouped value.

Struct Declaration

x
struct_declaration.c
Replay: real traced execution (multi-file project)
#include <stdio.h>

struct Point {
    int x;
    int y;
};

int main(void) {
    int x = 2;
    struct Point point = {x, 3};
    int sum = point.x + point.y;

    printf("sum=%d\n", sum);
    return 0;
}
#include <stdio.h>

struct Point {
    int x;
    int y;
};

int main(void) {
    int x = 5;
    struct Point point = {x, 3};
    int sum = point.x + point.y;

    printf("sum=%d\n", sum);
    return 0;
}
#include <stdio.h>

struct Point {
    int x;
    int y;
};

int main(void) {
    int x = 8;
    struct Point point = {x, 3};
    int sum = point.x + point.y;

    printf("sum=%d\n", sum);
    return 0;
}
  1. x ← 2, point ← (empty), sum ← 5

    8int main(void) {9    int x→ 2 = 2; //@x=5, 810    struct Point point→ (empty) = {x2, 3};11    int sum→ 5 = point.x2 + point.y3;1213    printf("sum=%d\n", sum5);14    return 0;15}
    outputsum=5
  1. x ← 5, point ← (empty), sum ← 8

    8int main(void) {9    int x→ 5 = 5;10    struct Point point→ (empty) = {x5, 3};11    int sum→ 8 = point.x5 + point.y3;1213    printf("sum=%d\n", sum8);14    return 0;15}
    outputsum=8
  1. x ← 8, point ← (empty), sum ← 11

    8int main(void) {9    int x→ 8 = 8;10    struct Point point→ (empty) = {x8, 3};11    int sum→ 11 = point.x8 + point.y3;1213    printf("sum=%d\n", sum11);14    return 0;15}
    outputsum=11