在函数中创建结构数组并返回数组

时间:2017-01-29 09:55:20

标签: c pointers struct

我正在努力在函数中创建结构数组(使用realloc)并返回数组。

问题是,当我在函数外部创建断点时,它向我显示数组等于NULL(这意味着它从未创建过数组吗?)

当我更改代码并使数组静态时...它正在工作,但是当我试图让它变得动态时......问题就开始了。

应该填充和创建数组的函数:

int ReadAllDate (Person *b)
{
    int count=0;
    char choice;

    b = (Person*)malloc(sizeof(Person));

    printf("Would you like to enter a person?(y,n)\n");
    choice = getchar();

    while(choice == 'y')
    {
        b = (Person*)realloc(b,(count+1) * sizeof(Person));
        getchar();
        ReadPerson(b+count);
        printf("Done!\n");
        count++;
        getchar();

        printf("Would you like to add a person?(y,n)\n");
        choice = getchar();
    }
    printf("The number of entered persons is %d\nBye\n", count);
    return count;
}

{首先我为这个1人的数组分配内存(在malloc中) 然后为每个人添加我为多人重新分配数组}

根据我的理解,因为b是一个指针,我在这个函数中对这个指针所做的一切应该影响整个代码。

这里是主要的:

int main(int argc, const char * argv[])
{
    Person *b;
    int count;
    int ind1, ind2;

    count = ReadAllDate(b);

    printf("insert the first index (the smaller): ");
    scanf("%d", &ind1);
    printf("insert the second index (the bigger): ");
    scanf("%d", &ind2);
    PrintRange(b, count, ind1, ind2);
}

当我将b传递给其他函数PrintRange以打印structs数组时,它不会打印此数组中的元素,可能是因为b中没有任何内容。 那是为什么?

当我让b静止的时候,我再次提醒 这意味着我在主要声明b

Person b[SIZE];

并且在函数ReadAllDate中不要尝试分配代码的大小。

{ 请不要告诉我使用我在这里使用的其他功能,因为我在大学里从未学过使用其他功能..所以当我完成课程时,我会提高编码技能并使用更好的功能但是现在我想要使用教授教给我们的东西:) }

0 个答案:

没有答案