[In support of @OriginalGriff Answer:]
using memmove you will gain performance but at an expense of readability and a chance to shoot yourself in the foot. Remember you are dealing with raw mem locations and slight shift can have.... you know what I mean.
If you are dealing with small set of data, then stick with for loop. It is readable, not hard to write and easy to debug and maintain, but it will have performance hit as compared to memmove.
If you are dealing with very large set of data, then memmove may be your friend, but handle with care. Remember you still need to over-write your first index (index 0 in this case) once you move your data.
BTW: as I pointed out, @originalgriff's code needs some improvements, like this
const int SIZE = 20;
memmove(data+1, data, (sizeof(int)*(SIZE-1)));