在链表中插入值

问题描述 投票:0回答:1

这并不是真正的问题,而是一个小疑问 我正在创建一个函数来在链接列表中插入键值。

void Insert_val(ListNode **l , int x)//to insert value of x;
{
    ListNode *p ;//create a pointer to datatype ListNode
    p = malloc(sizeof(ListNode));//give pointer chunk from memory to store data
    p->val = x;//value of p is x
    p->next = *l;// next ptr of p points to 1st node
    *l = p;//head ptr of list points to p making it first node
}

将内存分配给指针后,它如何将内存分为包含值 x 和下一个指针的两部分? p指针怎么做到那个指针p只是指向ListNode类型的数据类型 当给定一块随机内存块时,它如何划分它以便生成所需的数据类型? 我在哪里可以了解更多有关这些内部运作的信息?

c pointers dynamic-memory-allocation
1个回答
0
投票

您的措辞“将内存分配给指针”并没有真正描述正在发生的事情。您没有分配内存的指针。

我认为恰恰相反。

malloc()
找到一些所需大小的免费内存供您使用。它将地址返回给您并记录该内存现在已被使用,例如下次打电话就无法使用了
malloc()

“将内存分为包含值 x 和下一个指针的两部分”不是

malloc()
的一部分。那是你在做的事;尽管可能不知道并间接地告诉编译器分配的内存现在与您用于“
p
指向什么”的结构类型定义的结构一起使用。

编译器只是相信您“当给定随机内存块时,p 只是指向 ListNode 类型的数据类型”,因为您的代码是这么说的。你的责任,你的风险。因为许多与指针/malloc 相关的问题都来自于相关程序员并未真正承担的责任。

我建议找一本关于这些问题的书,也许是教程。

最新问题
© www.soinside.com 2019 - 2024. All rights reserved.