c-如何初始化和动态分配结构数组中的int指针成员



如何初始化和动态分配结构数组中的int指针?

我的程序允许我打印注册[0]。成绩[x],但当我尝试访问除0之外的任何其他注册索引值时(如登录[1].成绩[x][strong>或登记[2].成绩[x][strong>),我的程序分段会出错。

这是我的密码。。。

例如,如何使注册[2].sgrades[x]初始化并等于零?

在我的结构中:

struct Enroll
{
        int *grades;
};

In main:

struct Enroll *enroll = (struct Enroll *) calloc(count.enroll, 10 * sizeof(struct Enroll));
enroll->grades = (int *) calloc(count.grades, 10 * sizeof(int));

在功能中:

enroll[x].grades[y];

为结构注册元素的数量分配内存

struct Enroll *p = calloc(count.enroll, sizeof(struct Enroll));

现在您有了要填充的结构的数量,您需要的是int指针保存值的内存,而int指针的数量是count.enroll

for(i=0;i<count.enroll;i++)
{
   p[i].grades = calloc(count.grades,sizeof(int)); 
   // Fill in the values
}

PS:或者,您可以选择malloc(),然后选择memset()

在主要情况下,您应该有

struct Enroll *enroll =  calloc(count.enroll, sizeof(struct Enroll));
for(int i = 0; i < count.enroll ;i++)
{
    enroll[i].grades =  calloc(count.grades,  sizeof(int));
}

在代码中,您没有为每个整数指针分配内存。

相关内容

  • 没有找到相关文章

最新更新