#include <stdio.h>

typedef struct {
    int *x;
    int **y;
} inner ;

typedef struct {
    int *g;
    inner in[3];
} outer;


int *ep;

int main(int argc, char *argv[])
{
    outer o;
    int z = 5;
    int zzz;

    printf("%d\n" , z);

    ep = &z;

    o.in[2].x = ep;

    *o.in[2].x = 3;
    printf("%d\n" , z);

    inner i;
    i.x = &zzz;
    o.in[1] = i;

    int **ptr = &o.in[0].x;
    int *p = *ptr;
    /* outer oo[4]; */

    /* oo[2].in[2].y = &ep; */
    return 0;
}

#include <stdio.h>

typedef struct {
    int *x;
    int **y;
} inner ;

typedef struct {
    int *g;
    inner in[3];
} outer;


int *ep;

int main(int argc, char *argv[])
{
    outer o;
    int z = 5;

    printf("%d\n" , z);

    ep = &z;

    o.in[2].x = ep;

    *o.in[2].x = 3;
    printf("%d\n" , z);

    outer oo[4];

    oo[2].in[2].y = &ep;
    return 0;
}

--- 
+++ 
@@ -17,6 +17,7 @@
 {
     outer o;
     int z = 5;
+    int zzz;
 
     printf("%d\n" , z);
 
@@ -27,8 +28,14 @@
     *o.in[2].x = 3;
     printf("%d\n" , z);
 
-    outer oo[4];
+    inner i;
+    i.x = &zzz;
+    o.in[1] = i;
 
-    oo[2].in[2].y = &ep;
+    int **ptr = &o.in[0].x;
+    int *p = *ptr;
+    /* outer oo[4]; */
+
+    /* oo[2].in[2].y = &ep; */
     return 0;
 }
Add bitwise copy of struct to complex struct example.
