【发布时间】:2021-02-19 16:04:12
【问题描述】:
我无法理解带有节点和数组的指针。假设我们有这样的结构:
typedef struct node
{
int x;
struct node *next;
}node;
如果我有一个节点指针数组,例如:
node *table[50];
我可以说:
table[0] = malloc(26 * sizeof(node*));
有可能吗? 我的意思是 table[0] 是一个指向 node 的指针,但 malloc 将返回一个指向 node 的指针 的指针。 事实上,我想做不止一个(对于新数组中的每个指针,我想创建一个新的节点指针数组,最后最后一个数组的每个元素都会有一个链表) 希望我很清楚,并原谅我的英语不好。
【问题讨论】:
-
可能,但不是一个好主意。
table[0]是node*,所以它指向node和大小计算26 * sizeof(node*)不匹配。 -
你想创建节点指针数组,那么为什么不让每个元素都指向节点指针(
node **table[50];)? -
一般规则是,如果你在
malloc()中为sizeof()提供一个类型参数,它的*应该比你分配给的类型少1。 -
node是链表的一部分。你不需要将它们组成一个数组——table的每个元素都指向一个节点,它是列表中的第一个节点。 -
这看起来像一个哈希表。
table的每个元素都是一个哈希桶。桶本身是一个链表。所以table[i]指向单个节点,它是列表中的第一个节点。该列表使用next指针动态增长。
标签: arrays c pointers data-structures nodes