C méthode d'itération sur une struct membres comme un tableau?

Disons que j'ai une classe vector:

typedef struct vec3_s
{
    float x, y, z;
}
vec3;

Mais, je voudrais être en mesure d'itérer dessus sans convertir un tableau de float. Alors qu'un casting est acceptable dans ce cas, je suis curieux de voir si quelque chose le long des lignes de C++ comme fonctionnalité est faisable en droit C. Par exemple, en C++, car std::vector< T > a l'indice [] opérateur surchargé, je peux passer l'adresse de son premier indice d'une fonction prenant un void*.

c'est à dire,

void do_something_with_pointer_to_mem( void* mem )
{
    //do stuff
}

int main( void )
{
    std::vector< float > v;

    //fill v with values here

    //pass to do_something_with_pointer_to_mem

    do_some_with_pointer_to_mem( &v[ 0 ] );

    return;
}

Un autre, plus concrète, par exemple, lorsque les appels à glBufferData(...) sont fait en OpenGL (lors de l'utilisation de C++):

glBufferData( GL_ARRAY_BUFFER, sizeof( somevector ), &somevector[ 0 ], GL_STREAM_DRAW );

Donc, est-il possible de réaliser quelque chose de similaire en C à l'aide de l'indice de l'opérateur? Si non, et j'ai dû écrire une fonction (par exemple, float vec3_value_at( unsigned int i )), serait-il judicieux de simplement static inline dans le fichier d'en-tête est défini dans?

InformationsquelleAutor zeboidlund | 2013-01-19