c - 指向链表指针数组的指针

标签 c arrays pointers malloc

在过去的 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_arrayold_array 之后可能是也可能不是同一个指针,但无论哪种方式 new_array 都保证是指向足够空间的指针保存新数组(如果无法分配内存,则为 NULL)

第二次编辑: 正如 user411313 所暗示的,如果你想要指向数组的实际指针,你需要获取数组的地址:

LList ***p_array;
p_array = &array;

关于c - 指向链表指针数组的指针,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/4046718/

相关文章:

javascript - Js从数组中删除元素而不改变原始元素

c - 将字符串添加到字符数组的特定位置,导致 C 编程中的缓冲区溢出

c++ - 我从指针得到一个未初始化的对象

c++ - 两个类之间的循环引用

c - 之前完美的C程序在Ubuntu上编译后无法运行

c - 为什么 fgets 可以在两次调用时正常工作?

php - 从数组中最后一个元素的末尾修剪不需要的字符

c 结构体和 pthread 指针分配

c - 如何让阻塞在 recv() 上的线程优雅地退出?

c - dbus_connection_send_with_reply 超时