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
#include <stdio.h>
#include <stdlib.h>

struct Point {
    int x, y;
    struct Point* next_point;
};

int main(int argc, char *argv[]) {
    // You use the heap when you don't know many things you need to allocate space for at
    // compile-time and/or when you need things to not be destroyed when a function returns.
    
    int num_points = 3;
    struct Point* points = malloc(sizeof(*points) * num_points);
    // struct Point points[num_points];  // WHY NOT??? ... no variables in array declaration
    points[0].x = 1;
    points[0].y = 2;
    points[0].next_point = &(points[1]);
    points[1].x = 4;
    points[1].y = 10;
    points[1].next_point = &(points[2]);
    points[2].x = 7;
    points[2].y = 2;
    points[2].next_point = &(points[0]);
    // Same as this (below), but &(points[0]) better expresses what you actually *mean*.
    // points[2].next_point = points;

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

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