我怎样才能让它发挥作用? 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;
}
答案 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;
}