1
 2
 3
 4
 5
 6
 7
 8
 9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
#include <stdio.h>
#include <stdlib.h>
#include <stdbool.h>
#include <assert.h>

// CONCISE SYNTAX (typedef shortcut)

// Define a new struct type called 'Point'.   (shorter than 'struct Point')
typedef struct { int x; int y; char* name; } Point;
//      └───────────────┬──────────────────┘
//            this can be used as a type

void print_point(Point p) {   // ('struct Point p' ⇒ 'Point p')
    printf("Point \"%s\"  is at (%d, %d)\n", p.name, p.x,  p.y);
    // p.x accesses the .x field.   p.y accesses the .y field.
}

int main(int argc, char* argv[]) {
    
    // Create an object called 'p' of type 'struct Point' that contains the (x,y) coordinates (5, 7).
    Point p = { .x = 5,
                .y = 7,
                .name = "Maureen" };
    // The express on the right-hand side of the '=' is called a NAMED INITIALIZER.
    // Always use a named initializer, where possible and appropriate.

    print_point(p);

    return EXIT_SUCCESS;
}
/* vim: set tabstop=4 shiftwidth=4 fileencoding=utf-8 noexpandtab: */

© Copyright 2022 Alexander J. Quinn         This content is protected and may not be shared, uploaded, or distributed.