首页 文章

C:分配一个指针

提问于
浏览
-5

所以我们有一个实际上代表链表节点的结构 . 也是指向节点的指针 .

typedef struct node{
    int value;
    struct node *next;
}node;

node* head=NULL;

如果我要使用malloc动态分配指针,

head=malloc(sizeof(node));

这意味着我正在创建一些具有节点大小的内存空间,并且head指向它 .

我想知道这个 head=malloc(sizeof(node*)); 之间的区别,你可以在sizeof中看到它有节点*而不是节点 . 现在我真的觉得我一直都不知道malloc到底做了什么!

3 回答

  • 2
    head=malloc(sizeof(node*));
    

    将在内存中分配一个空间以将POINTER保存到node类型的对象 .

    head=malloc(sizeof(node));
    

    将为结构本身分配空间,并返回该内存空间的地址,并将在 head 变量中保存

    有关更多信息,请查看有关Malloc的其他问题 . How do free and malloc work in C?

  • 2

    sizeof(node) 是整个结构的大小(以字节为单位),可以是任意大的 . sizeof(node*) 是指针变量的大小,无论结构有多大,它都是固定的(在大多数系统中它都很小) .

  • 1
    head=malloc(sizeof(node*));
    

    是不正确的 . 对 malloc 的调用分配了足够的内存来仅保存 node* . node* 必须指向 node 对象 . 这意味着您需要分配足够的内存来保存 node 对象,而不是 node* .

相关问题