I tend to think that doing:

memcpy(*settings + i, ap, sizeof(*ap));

is safer in this cases, as you do not need to remember the type of "ap".