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();
}
由于结构不支持初始化,所以有没有什么方法可以在不使用内存分配函数的情况下在单行代码中分配在结构内声明的这种类型的数组,并且所有这些都是为了简单起见? 请坚持代码。
最佳答案
在 malloc 行之后你可以写:
*p[i] = (struct data){'h', {1, 1, 1}};
这使用带有 compound literal 的结构赋值作为来源。
顺便说一句,我建议以这种方式执行 malloc 行:p[i] = malloc(sizeof *p[i]);
, see here进行解释。
关于c - 如何直接分配在结构内声明的整数数组?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/52530813/