关于结构体地址与结构体指针的一些分析-创新互联

 当我在学习C语言的链表实现时,遇到了一些问题,通常链表的表头是通过结构体创建的,而表头中包含所需要指向的第一个节点与整个链表长度等信息,对于在表头中所存储的地址信息感到一点疑惑。
如一下创建的一个单向链表:

在互助等地区,都构建了全面的区域性战略布局,加强发展的系统性、市场前瞻性、产品创新能力,以专注、极致的服务理念,为客户提供成都做网站、网站设计 网站设计制作按需定制网站,公司网站建设,企业网站建设,成都品牌网站建设,成都全网营销推广,成都外贸网站制作,互助网站建设费用合理。
typedef struct _tag_LinkListNode LinkListNode;       //结点取别名

struct _tag_LinkListNode
{
    LinkListNode* next;
};       // 结点指针域定义      

typedef struct _tag_LinkList
{
    LinkListNode header;
    int length;
} TLinkList;        //头结点定义

struct Value
{
    LinkListNode header;
    int v;
};           //数据域定义

此时有如下问题:
1.TLinkList中的header存储的是什么?
2.TLinkList的长度是多大?
3.TLinkList的链表与第一个结点是如何关联的?

void main(void)
{
    struct  Value v1;
    v1.v = 1;

    TLinkList* list = (TLinkList*)malloc(sizeof(TLinkList));    //创建链表
    LinkListNode* current = (LinkListNode*)list;             //将链表强制类型转换

    printf("list size is %d\n",sizeof(list));
    printf("&list address is %p\n", &list);                      
    printf("list address is %p\n", list);
    printf("&(list->header) address is %p\n", &(list->header));

    printf("TLinkList size is %d\n", sizeof(TLinkList));
    printf("list->header value is %p\n",list->header);
    printf("&v1 address is %p\n", &v1);
    printf("&(v1->header) address is %p\n", &(v1.header));
    printf("&(list->length) address is %p\n", &(list->length));
    printf("list length value is %d\n", list->length);
    free(list);
}

其输出结果为;

list size is 4
&list address is 0113FBE8
list address is 014CF558
&(list->header) address is 014CF558
TLinkList size is 8
list->header value is 0113FBF4
&v1 address is 0113FBF4
&(v1->header) address is 0113FBF4
&(list->length) address is 014CF55C
list length value is 0

根据输出结果,知道header中存储的为其指向结点的地址,TLinkList的长度为8,其地址可以用下图表示:
关于结构体地址与结构体指针的一些分析

另外有需要云服务器可以了解下创新互联scvps.cn,海内外云服务器15元起步,三天无理由+7*72小时售后在线,公司持有idc许可证,提供“云服务器、裸金属服务器、高防服务器、香港服务器、美国服务器、虚拟主机、免备案服务器”等云主机租用服务以及企业上云的综合解决方案,具有“安全稳定、简单易用、服务可用性高、性价比高”等特点与优势,专为企业上云打造定制,能够满足用户丰富、多元化的应用场景需求。

名称栏目:关于结构体地址与结构体指针的一些分析-创新互联
网页URL:https://www.cdcxhl.com/article22/dphhjc.html

成都网站建设公司_创新互联,为您提供企业建站企业网站制作动态网站移动网站建设网站制作营销型网站建设

广告

声明:本网站发布的内容(图片、视频和文字)以用户投稿、用户转载内容为主,如果涉及侵权请尽快告知,我们将会在第一时间删除。文章观点不代表本网站立场,如需处理请联系客服。电话:028-86922220;邮箱:631063699@qq.com。内容未经允许不得转载,或转载时需注明来源: 创新互联

搜索引擎优化