2012-02-27 31 views
5

Trong C# .NET tôi có thể sử dụng List<myclasstype> vals = new List<myclasstype>(); nó có thể làm tương đương với trong C?làm thế nào để tạo một mảng với các kiểu cấu trúc của tôi?

Tôi có một struct như:

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

và tôi muốn làm:

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

Tôi hy vọng điều này là rõ ràng cho bạn. Cảm ơn trước.

Trả lời

6

Nó cũng giống như bạn sẽ tạo ra bất kỳ mảng khác trong C ngoại trừ các loại được thay thế bằng Baa

int size = 5; 
Baa baaArray[size]; 

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

Bạn cũng có thể sử dụng con trỏ và malloc để thực hiện điều này:

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

//... 

Hi vọng điêu nay co ich.

+0

Hãy nhớ rằng việc sử dụng các mảng có kích thước biến sẽ tự động làm cho mã của bạn C99 - sử dụng trình biên dịch hỗ trợ nó. –

+0

sẽ không phải là chiều dài của 'size' được biết tại thời gian biên dịch? kể từ khi tôi tuyên bố nó là 5? –

+0

'kích thước' không được khai báo rõ ràng là' const'. –

Các vấn đề liên quan