Можно ли выполнить итерацию структуры C, где все элементы одного типа, с помощью указателя. Вот пример кода, который не компилируется:
#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 ;
}
Члены foo должны быть выровнены в памяти так, чтобы они шли друг за другом, при условии, что ваш компилятор/ядро не пытается обеспечить защиту стека от переполнения буфера.
Итак, мой вопрос:
Как бы я перебирал элементы структуры C одного типа.
int * tmp = (int *)data'
? Какое сообщение об ошибке вы получаете? - person David Thornley   schedule 09.12.2009