2012-02-27 81 views
5

在C#.NET中,我可以使用List<myclasstype> vals = new List<myclasstype>();它可能與C等價嗎?如何使用我的結構類型創建數組?

我有一個像結構:

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

,我想這樣做:

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

我希望這是明確的爲您服務。提前致謝。

回答

6

這是因爲你會C語言創建任何其他陣列除了類型替換Baa

int size = 5; 
Baa baaArray[size]; 

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

您還可以使用指針和malloc的做到這一點是相同的:

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

//... 

希望這可以幫助。

+0

請記住,使用可變大小的數組會自動使您的代碼C99--使用支持它的編譯器。 – 2012-02-27 06:19:54

+0

不會在編譯時知道'size'的長度嗎?因爲我宣佈它是5? – 2012-02-27 15:40:16

+0

'size'沒有明確聲明爲'const'。 – 2012-02-27 17:09:55

相關問題