void func() { int *p = new int; // automatic pointer to dynamic object int q; // automatic object int *r = &q; // automatic pointer to automatic object static int *s = p; // static pointer to dynamic object static int *s = r; // static pointer to automatic object (bad idea) thread_local int **t = &s; // thread pointer to static object }