2013-04-23 115 views
-3

我怎样才能使它工作?结构数组元素可以是随机的,数组中的元素可以变化。我试图创建一个指针,并分别分配每个记录,但没有运气。c中的结构数组赋值

#include<stdio.h> 

typedef struct _str 
{ 
    int arraySize; 
    int a[10]; 
} str; 


int main() 
{ 
    str s[50]; 

    s[10] = {4, {1, 4, 5, 6}}; 
    s[20] = {3, {2, 7, 11}}; 
    s[30] = {3, {3, 8, 9}}; 

    return 0; 
} 
+0

)' ? – 2013-04-23 07:13:18

+0

你究竟需要什么?请详细说明。 – 2013-04-23 07:16:17

+0

@Koushik我跑了它,它显示错误'预期表达式'{'token |' – 2013-04-23 07:19:04

回答

0

如果您想要决定运行时使用列表(Linkedlist或循环列表)中元素的数量而不是数组。看到http://www.cprogramming.com/tutorial/c/lesson15.html

或使用代码类似于下面

typedef struct _str 
{ 
    int arraySize; 
    int *a; 
} str; 


int main() 
{ 
str s[50]; 

    s[0].arraySize =3; 
    s[0].a=(int *)malloc(sizeof(int)*s[0].arraySize) ; 
    s[0].a[0]=2; 
    s[0].a[1]=5; 
    s[0].a[2]=7; 


    return 0; 
} 
2

你正在做的就是确定结构什么它已经宣布 后,你只能分配一个struct它已经经过

结构可以声明和初始化在一次的句子(我的意思是在dec laration)为使

typedef struct _str 
{ 
    int arraySize; 
    int a[10]; 
} str; 

int main() 
{ 
    str s[10] = {{1,{2,3,4}},{2,{3,5,6}}....};// this is correct but impractical. 

//但这是错误的

s[1] = {1,{2,3,4}};// 

//你有所以你要`兰特(要做到这一点

s[1].arraysize = 10; //explicitly assign each member 

    for(int i=0;i<s[1].arraysize;i++) 
    s[1].a[i] = value; 

}

+0

谢谢你的回答。我知道你的解决方案。如果可能的话,我试图以更简单的方式做。 – 2013-04-23 07:53:06

+0

@MeUnagi更简单的方式是这个'str s [10] = {{1,{2,3,4}},{2,{3,5,6}} ....};'ofcouse simple in current上下文只是分割和初始化,而不是可读性,生产力等。 – 2013-04-23 07:55:21