2012-02-27 11 views
5

En C# .NET puedo usar List<myclasstype> vals = new List<myclasstype>(); ¿es posible hacer el equivalente a en C?cómo hacer una matriz con mis tipos de estructuras?

que tienen una estructura como:

typedef struct foo { 
    int x; 
    int y; 
} Baa; 

y quiero hacer:

**BAA vals = ?? 
int i ; 
for(i = 0; i < size; i++) 
{ 
    vals[i].x = i; 
    vals[i].y = i * 10; 
} 

espero que esto está claro para usted. Gracias por adelantado.

Respuesta

6

es el mismo que puedes crear cualquier otra matriz en C, excepto que el tipo se reemplaza con Baa

int size = 5; 
Baa baaArray[size]; 

int i; 
for(i = 0; i < size; i++) 
{ 
    baaArray[i].x = i; 
    baaArray[i].y = i*10; 
} 

También puede utilizar punteros y malloc para lograr esto:

int size = 5; 
Baa *baaPtr = malloc(sizeof(Baa) * size); 

//... 

Espero que esto ayude.

+0

Tenga en cuenta que el uso de matrices de tamaño variable hace que su código C99 sea automático, utilice un compilador que lo admita. –

+0

¿no se conocería la longitud de 'size' en tiempo de compilación? ya que declaro que es 5? –

+0

'size' no se declara explícitamente como' const'. –

Cuestiones relacionadas