首页 > 解决方案 > 在结构内声明结构时指向结构的指针

问题描述

我有一个关于结构定义和指针的问题。

在链表节点结构的定义中我们定义结构如下:

typedef struct node
{
    int data;
    struct node *next;
}Node;

为什么我们要使用这种声明方式而不是:

typedef struct node
{
    int data;
    struct node next; //changed this line
}Node;

提前致谢!

标签: cpointersstruct

解决方案


实际上我们这样做是因为,我们避免了递归调用。假设考虑您的第二种情况。您在节点本身内部调用节点。那么节点的大小是多少。大小(int)+大小(节点)。然后再次对于节点大小变为 sizeof(int)+sizeof(node)。所以这是一个不可阻挡的递归过程。所以我们使用第一种情况,因为避免了递归过程。它只是指向相同类型结构的对象。


推荐阅读