массив хранится в виде одной строки (любой размерности)
подойдёт memmove из string.h
220.127.116.11 The memmove function
void *memmove(void *s1, const void *s2, size_t n);
The memmove function copies n characters from the object pointed to
by s2 into the object pointed to by s1 . Copying takes place as if
the n characters from the object pointed to by s2 are first copied
into a temporary array of n characters that does not overlap the
objects pointed to by s1 and s2 , and then the n characters from the
temporary array are copied into the object pointed to by s1 .
The memmove function returns the value of s1 .