Cómo alinear un puntero en C

¿Hay alguna manera de alinear un puntero en C? Supongamos que estoy escribiendo datos en una pila de matriz (por lo que el puntero va hacia abajo) y quiero que los siguientes datos que escriba estén alineados con 4 para que los datos se escriban en una ubicación de memoria que es un múltiplo de 4, ¿cómo lo haría? ¿ese?

yo tengo

 uint8_t ary[1024];
 ary = ary+1024;
 ary -= /* ... */

Ahora supongamos queary puntos en la ubicación0x05. Quiero que apunte0x04. Ahora solo podría hacer

ary -= (ary % 4);

pero C no permite el módulo en punteros. ¿Hay alguna solución que sea independiente de la arquitectura?

Respuestas a la pregunta(3)

Su respuesta a la pregunta