我想知道你是否可以创建一个整数列表。
如您所知,除了大多数其他语言外,您还可以拥有无限的数字列表。 但我不知道你是否可以用C做到这一点。
在C中你可以做到
int整数[20]; 但是我不想为它声明一个大小,而是我想要一个永远持续下去的列表。
另外,我有一个结构
typedef struct someStruct
{
char data;
chat data2;
}STRUCT_REC,*SR;
为了制作我们刚刚做的结构列表 STRUCT_REC列表;正确?
答案 0 :(得分:2)
你有两个选择:
使用动态分配的数组。您可以使用malloc()分配所需的空间量。然后,您可以使用realloc()分配更多空间。这种方法的缺点是你通常会分配比你需要的更多的空间,当你重新分配空间时,程序可能必须将你的所有项目移动到内存中的新位置,这可能是昂贵的。
< / LI>使用linked list。链接列表允许您随时为单个项目动态分配空间,并将其添加到列表的末尾。为此,链表由节点组成,每个节点包含一个数据项和一个指向下一个节点的指针。这种方法的缺点是你失去了快速随机访问(即如果你想要项目#100,你必须首先查看项目1-99),并且你有额外的空间开销。
答案 1 :(得分:0)
您需要查看malloc
和朋友(calloc
,realloc
,free
)。
无论您使用何种类型,使用它的方式都是相同的。
这是一个非常简单的双打示例:
#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)