-3

我怎样才能让它工作?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;
}
4

2 回答 2

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;

}

于 2013-04-23T07:32:09.473 回答
0

如果您想在运行时确定元素的数量,请使用列表(链表或循环列表)作为类型而不是数组。见 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;
}
于 2013-04-23T07:28:17.860 回答