Iterando sobre miembros de la estructura del mismo tipo en C

¿Es posible iterar de una estructura C, donde todos los miembros son del mismo tipo, utilizando un puntero? Aquí hay un código de ejemplo que no se compila:

#include <stdio.h>
#include <stdlib.h>

typedef struct
{
    int mem1 ;
    int mem2 ;
    int mem3 ;
    int mem4 ;
} foo ;

void my_func( foo* data )
{
    int i ;
    int* tmp = data ; // This line is the problem

    for( i = 0; i < 4; ++i )
    {
        ++tmp ;
        printf( "%d\n", *tmp ) ;
    }
}

int main()
{
    foo my_foo ;
    //
    my_foo.mem1 = 0 ;
    my_foo.mem2 = 1 ;
    my_foo.mem3 = 2 ;
    my_foo.mem4 = 3 ;
    //
    my_func( &my_foo ) ;
    return 0 ;
}

Los miembros de foo deben alinearse en la memoria para que estén uno tras otro, asumiendo que su compilador / kernel no intenta proporcionar protección de pila para el desbordamiento de búfer.

Así que mi pregunta es:

¿Cómo iteraré sobre los miembros de una estructura de C que son del mismo tipo?

Respuestas a la pregunta(7)

Su respuesta a la pregunta