2012-02-27 17 views
5

W języku C# .NET mogę użyć List<myclasstype> vals = new List<myclasstype>();, czy możliwe jest równoważne z C?jak utworzyć tablicę z moimi typami struct?

mam struct takich jak:

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

i chcę zrobić:

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

Mam nadzieję, że to jest jasne dla ciebie. Z góry dziękuję.

Odpowiedz

6

To jest taka sama, jak można stworzyć dowolną inną tablicę w C z tym, że typ jest zastąpiony Baa

int size = 5; 
Baa baaArray[size]; 

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

Można także wykorzystać wskazówki i malloc do osiągnięcia tego celu:

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

//... 

Mam nadzieję że to pomoże.

+0

Należy pamiętać, że używanie tablic o zmiennym rozmiarze powoduje automatyczne utworzenie kodu C99 - użyj kompilatora, który go obsługuje. –

+0

Czy długość 'size' nie byłaby znana podczas kompilacji? skoro deklaruję, że to 5? –

+0

'size' nie jest jawnie deklarowane jako' const'. –

Powiązane problemy