如何创建动态大小的NULL指针数组?

时间:2018-07-29 12:21:49

标签: c pointers malloc

我想要具有动态大小的指针数组,如何使用malloc来做到这一点? 没有malloc,它看起来像这样:

typedef struct Nodes {
    UINT_64 Datasequence; 
    UINT_32 Data; 
    struct Nodes *next;
} Node;

Node *head_ri_interface[2][50];

这将为我提供[2][50]个空指针的数组。

我已经尝试过了:

void NULLPointerArrayInit(int MAX_LIST_HEAD) {
    int i = 0;

    for (i = 0; i < 2; i++) {
        head_ri_interface[i] = (Node *)malloc(sizeof(Node *) *  MAX_LIST_HEAD);
    }
}

但是我看到我指向的结构不是NULL。我在做什么错了?

1 个答案:

答案 0 :(得分:1)

void ** 2Darray = malloc(2*sizeof(void*));

int i;
for(i = 0; i < 2; i++){
    2Darray[i] = malloc(MAX_LIST_HEAD*sizeof(void*));
    memset(2Darray[i], 0, MAX_LIST_HEAD*sizeof(void*));
}

所以我在这里做什么:我为2种指针类型分配了内存。而不是将这两个指针中的每一个指向指针类型内存大小的MAX_LIST_HEAD倍(您可以假设它是一个指针大小数组-MAX_LIST_HEAD);之后,我向所有指针写入零,这意味着它们指向NULL。

(如果指针指向0,则意味着它指向NULL。但是,当指针指向NULL时,并不总是意味着它指向0)