// example code with pointers
#include <bits/stdc++.h>
using namespace std;

struct Node;
using PNode = Node *; // typedef Node * PNode;
struct Node
{
	int x;
	int y;
	PNode left;
	PNode right;

	Node (int x_, int y_)
	{
		x = x_;
		y = y_;
		left = nullptr;
		right = nullptr;
	}
};

PNode fun ()
{
	return new Node (1, 2);
}

int main ()
{
	PNode root = fun ();
	root = (PNode) 0x10196a80; // most likely fails on next line
	cout << (*root).x << " " << (*root).y << endl;
	cout << root -> x << " " << root -> y << endl; // does the same
	cout << root -> left << " " << root -> right << endl;
	cout << root << endl;
	return 0;
}
