C语言里用malloc开辟动态链表,为什么两个结点之间的地址差不是一个结构体的长度

我定义了一个链表结构体,sizeof显示长度为24,用malloc开辟一段动态链表,含有若干个结点,每个结点间的距离为什么是88,这样的话头指针head+1指向的就不是后一个结点,请问原因是什么,该如何处理?

链表的存储空间不是连续的,连续的那是数组。所以只能通过next存储下一个节点的位置。你上面的情况就说明存储空间不是连续的,因为sizeof是24,如果是连续的话,相差距离应该为24,而不是88,。追问

我怎样定位到下一个,比如说head+1是head往后24个地址,怎样让它往后88个地址?

追答

这个没法定位,也许你这次运行是88个差 下次就99个差了 链表一个节点包含两个部分,一个data用于存储数据,一个next指针用于存放下一个节点的位置。要想找下一个节点,直接访问本节点的next就可以了

温馨提示:内容为网友见解,仅供参考
第1个回答  2014-05-28
它们是由系统随机安排的,所以不连续。你想想,如果下一个结点的地址能确定,那结点结构中还要个*next指针浪费内存干什么!
相似回答
大家正在搜