c - 如何直接分配在结构内声明的整数数组?

标签 c arrays initialization structure

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/

相关文章:

c - 寻找力量

javascript - 在javascript中定义数组

php - 字符串作为 php 中的数组

c++ - 原始类型的类成员的初始化行为

javascript - dojo amd init 方法自动运行

c - 在 C/C++ 中初始化大小未知的数组

c - 编辑和更改二进制文件中的部分

c++ - 如何向下舍入到最接近的 10 的幂?

c - 如何在c中一次从一串没有空格的字符中输入一个字符?

javascript - 如何将任意字节值添加到字符串的末尾? (JavaScript)