【发布时间】:2018-09-27 06:32:51
【问题描述】:
struct data
{
char name;
int conn[3];
};
typedef struct data unit;
typedef unit *link;
int main()
{
int i;
link p[100];
for(i=0;i<=100;i++)
{
p[i]=(link)malloc(sizeof(unit));
p[i]->name='h';
p[i]->conn[]=(int*){"1","1","1"}; **// assignment error**
}
for(i=0;i<=100;i++)
{
printf("%c\t%d\t%d\t%d\n",p[i]->name,p[i]->conn[0],p[i]->conn[1],p[i]->conn[2]);
}
getch();
}
由于结构不支持初始化,有没有什么方法可以在一行代码中分配在结构中声明的这种类型的数组,而不使用 mem 分配函数,并且所有这些都是为了简单起见? 请坚持使用代码。
【问题讨论】:
-
与您的问题无关:您声明了
conn[2],但您尝试访问conn[2],如果关闭了一个。这不会有好的结局…… -
哎呀编辑...
-
@M.M 我忘记了结构分配。您会对此做出解释并回答吗?
-
您不能直接分配给数组。即使结构包含数组,您也可以分配整个结构,但不能将数组分配为数组。
-
顺便说一句:
for (i = 0; i <= 100; i++)的两条线也差了一个。应该是:for (i = 0; i < 100; i++)
标签: c arrays initialization structure