#include <stdio.h>
#include <stdlib.h>
#include <assert.h>

struct Pt {
    double x;
    double y;
};

int main()
{
    struct Pt p1 = { 1.1, 2.2 };

    double x1 = p1.x;

    struct Pt *q1;
    q1 = &p1;

    x1 = (*q1).x;
    x1 = q1->x;
    // x1 = q1.x; // compiler error

    printf("%g\n", x1);
    printf("%lu\n", sizeof(p1));

    printf("%p\n", q1);     // struct Pt *
    printf("%p\n", &q1->x); // double *

    printf("%p\n", q1     + 1); // struct Pt *
    printf("%p\n", &q1->x + 1); // double *
    printf("%p\n", &q1->y + 1); // double *
}
