Hi,
'memcpy' espects memory addresses. You need to use the reference operator (&) in order to get a struct address.

Code
memcpy(&outer.nested, &inner, sizeof(INNER));


Anyway, you can't assign structs directly
Code
outer.nested = inner; // error
...
INNER test = outer.nested; // error


Depending on how you do receive the INNER struct, you can perform two actions: memcpy, as explained, or save the reference of the incoming struct. Something like this:
Code
typedef struct
{
	int inside_element;
} INNER;
typedef struct
{
	int outside_element;
	INNER * nested; // a pointer to a INNER struct
} OUTER;
...
outer.nested = &inner; //reference!
...

printf("\nnested element: %d; other element: %d", outer.nested->inside_element, outer.outside_element);
// or
INNER * test = outer.nested;
printf("\nnested element: %d; other element: %d", test->inside_element, outer.outside_element);


Hope it helps.
Salud!