这并不是真正的问题,而是一个小疑问 我正在创建一个函数来在链接列表中插入键值。
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类型的数据类型 当给定一块随机内存块时,它如何划分它以便生成所需的数据类型? 我在哪里可以了解更多有关这些内部运作的信息?
您的措辞“将内存分配给指针”并没有真正描述正在发生的事情。您没有分配内存的指针。
我认为恰恰相反。
malloc()
找到一些所需大小的免费内存供您使用。它将地址返回给您并记录该内存现在已被使用,例如下次打电话就无法使用了malloc()
。
“将内存分为包含值 x 和下一个指针的两部分”不是
malloc()
的一部分。那是你在做的事;尽管可能不知道并间接地告诉编译器分配的内存现在与您用于“p
指向什么”的结构类型定义的结构一起使用。
编译器只是相信您“当给定随机内存块时,p 只是指向 ListNode 类型的数据类型”,因为您的代码是这么说的。你的责任,你的风险。因为许多与指针/malloc 相关的问题都来自于相关程序员并未真正承担的责任。
我建议找一本关于这些问题的书,也许是教程。