C:创建结构集合/创建整数列表

时间:2011-03-11 22:55:39

标签: c list

我想知道你是否可以创建一个整数列表。

如您所知,除了大多数其他语言外,您还可以拥有无​​限的数字列表。 但我不知道你是否可以用C做到这一点。

在C中你可以做到

int整数[20]; 但是我不想为它声明一个大小,而是我想要一个永远持续下去的列表。

另外,我有一个结构

typedef struct someStruct
{
    char data;
    chat data2;
}STRUCT_REC,*SR;

为了制作我们刚刚做的结构列表 STRUCT_REC列表;正确?

5 个答案:

答案 0 :(得分:2)

你有两个选择:

  1. 使用动态分配的数组。您可以使用malloc()分配所需的空间量。然后,您可以使用realloc()分配更多空间。这种方法的缺点是你通常会分配比你需要的更多的空间,当你重新分配空间时,程序可能必须将你的所有项目移动到内存中的新位置,这可能是昂贵的。

    < / LI>
  2. 使用linked list。链接列表允许您随时为单个项目动态分配空间,并将其添加到列表的末尾。为此,链表由节点组成,每个节点包含一个数据项和一个指向下一个节点的指针。这种方法的缺点是你失去了快速随机访问(即如果你想要项目#100,你必须首先查看项目1-99),并且你有额外的空间开销。

答案 1 :(得分:0)

您需要查看malloc和朋友(callocreallocfree)。

无论您使用何种类型,使用它的方式都是相同的。

这是一个非常简单的双打示例:

#include <stdlib.h>
int main(void) {
    double *arr;
    arr = malloc(1 * sizeof *arr); /* size for 1 element */
    if (arr) {
        double *tmp;
        tmp = realloc(arr, 100 * sizeof *tmp); /* attempt to resize for 100 elements */
        if (tmp) {
            arr = tmp; /* resize 'worked' */
        } else {
            /* not enough memory */
            free(arr);
            exit(EXIT_FAILURE);
        }
        /* use arr */
        free(arr);
    }
    return 0;
}

答案 2 :(得分:0)

http://www.cplusplus.com/reference/clibrary/cstdlib/realloc/

您可以使用realloc来增加分配的内存量。此外,该页面上的示例可能是您想要学习的内容。它接近您所寻找的。

答案 3 :(得分:0)

您是否需要列表或是否需要编写列表代码?如果是前者,我建议你不要重新发明轮子,而是使用现有的测试库,例如glib

答案 4 :(得分:0)