2012-02-27 43 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

相关问题