Ale*_*lex 5 c arrays malloc pointers
嘿伙计们,所以我在过去的6个小时里一直在这个问题,并一直在谷歌疯狂无济于事.对,我需要一个指向数组的指针.此数组包含指向链接列表的指针.我将不得不malloc它,因为我不知道数组大小,直到运行时.
LList **array
Run Code Online (Sandbox Code Playgroud)
这是我的第一个想法,但这只是给了我一个LList数组的指针.或者至少这是我的理解.有人可以帮我一把吗?亚历克斯
编辑:确定如何使用它的一些信息.我实现了一个非常基本的哈希表.有一个结构包含指向链表的指针数组的指针.它需要是一个指向数组的指针,这样当我调整表格大小时,我只需将指针更改为指向较大的表格即可.
听起来你走在正确的轨道上.
LList **array;
array = malloc(num_ptrs * sizeof(LList*));
Run Code Online (Sandbox Code Playgroud)
array
现在是一个指针数组LList
,并且元素array[3]
将是指向a的指针LList
.
数组中的数组和指针非常相似(但不完全相同!),如经典示例所示:*(array + 2)
大部分相当于array[2]
.
编辑:
当您需要调整表格大小时,您只需要realloc
额外的空间:
LList **new_array;
new_array = realloc(old_array, new_size * sizeof(LList*));
Run Code Online (Sandbox Code Playgroud)
new_array
并且之后old_array
可能或可能不是相同的指针,但是new_array
保证两种方式都是指向足够空间来保存新数组的指针(或者NULL
如果无法分配内存)
第二次编辑: 正如user411313所提到的,如果你想要指向数组的实际指针,你需要获取数组的地址:
LList ***p_array;
p_array = &array;
Run Code Online (Sandbox Code Playgroud)