在过去的 6 个小时里,我一直在解决这个问题,并且一直在疯狂地搜索谷歌,但无济于事。
对了,我需要一个指向数组的指针。该数组包含指向链表的指针。我将不得不 malloc 它,因为我直到运行时才知道数组大小。
LList **array
这是我的第一个想法,但这只是给了我一个指向 LList 数组的指针。或者至少这是我的理解。有人可以帮帮我吗?
编辑:关于如何使用它的一些信息:我正在实现一个非常基本的哈希表。有一个结构包含指向链表指针数组的指针。 它需要是指向数组的指针,以便在我调整表大小时。我可以将指针更改为指向更大的表。
最佳答案
听起来您的方向是对的。
LList **array;
array = malloc(num_ptrs * sizeof(LList*));
array
现在是指向 LList
的指针数组,array[3]
等元素将是指向 的指针>LList
.
数组和指针在 C 中非常相似(但不完全相同!),如经典示例所示:*(array + 2)
大部分等同于 array[2]
.
编辑:
当您需要调整表格大小时,您只需要重新分配
额外的空间:
LList **new_array;
new_array = realloc(old_array, new_size * sizeof(LList*));
new_array
和 old_array
之后可能是也可能不是同一个指针,但无论哪种方式 new_array
都保证是指向足够空间的指针保存新数组(如果无法分配内存,则为 NULL
)
第二次编辑: 正如 user411313 所暗示的,如果你想要指向数组的实际指针,你需要获取数组的地址:
LList ***p_array;
p_array = &array;
关于c - 指向链表指针数组的指针,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/4046718/