c中的结构数组赋值

时间:2013-04-23 07:11:41

标签: c

我怎样才能让它发挥作用? struct数组元素可以是随机的,并且数组中的元素可以变化。我尝试创建一个指针并分别分配每个记录,但没有运气。

#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;
}

2 个答案:

答案 0 :(得分:2)

您正在做的是在声明之后定义结构声明

之后,您只能指定到结构中

结构可以在一次句子中声明和初始化(我的意思是在声明期间),因此

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;

}

答案 1 :(得分: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;
}