小编wro*_*n01的帖子

realloc 可以用来将 ** 指针更改为 * 指针吗?

此代码来自Zed Shaw 的《Learn C The Hard Way》。在练习 34 中,实践问题之一是实现动态数组,它只是包含在结构中的指针数组。

该结构如下所示:

typedef struct DArray {
    int end;
    int max;
    size_t element_size;
    size_t expand_rate;
    void **contents;
};
Run Code Online (Sandbox Code Playgroud)

要初始化其中之一,我们使用 DArray_create()

DArray *DArray_create(size_t element_size, size_t initial_max)
{
    DArray *array = malloc(sizeof(DArray));
    array->max = initial_max;

    array->contents = calloc(initial_max, sizeof(void *));

    array->end = 0;
    array->element_size = element_size;
    array->expand_rate = 300;

    return array;
}
Run Code Online (Sandbox Code Playgroud)

还有一个调整数组大小的函数:

static inline int DArray_resize(DArray *array, size_t newsize)
{
    array->max = newsize;

    void *contents = realloc(array->contents, array->max * sizeof(void *));

    array->contents …
Run Code Online (Sandbox Code Playgroud)

c arrays struct pointers

0
推荐指数
1
解决办法
109
查看次数

标签 统计

arrays ×1

c ×1

pointers ×1

struct ×1