在结构内部声明结构时指向结构的指针

尼姆罗德·奈姆(Nimrod Naim)

我对结构定义和指针有疑问。

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

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

我们为什么要使用这种声明方式代替:

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

提前致谢!

来自莫斯科的弗拉德

在其右大括号之后定义一个结构。直到结构具有不完整的类型。但是,结构的定义要求除灵活数组之外的所有其他成员都应具有完整的类型。

所以在这个声明中

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

数据成员的下一个类型不完整。

来自C标准(6.7.2.1结构和联合规范)

  1. ...类型是不完整的,直到紧接终止列表的}之后,然后才完成。

3结构或联合不得包含具有不完整或函数类型的成员(因此,结构不得包含自身的实例,但可以包含指向自身实例的指针),但结构的最后一个成员具有更多的一个命名成员可能具有不完整的数组类型;这样的结构(以及可能包含递归关系的任何并集的任何并集)都不应该是结构的成员或数组的元素。

至于指针,则它们始终具有完整的类型,因为它们的大小是已知的。

本文收集自互联网,转载请注明来源。

如有侵权,请联系[email protected] 删除。

编辑于
0

我来说两句

0条评论
登录后参与评论

相关文章

来自分类Dev

在结构内部创建指向结构的指针数组

来自分类Dev

从结构定义中声明指向接受结构的函数的指针?

来自分类Dev

从结构定义中声明指向接受结构的函数的指针?

来自分类Dev

指向结构内部的元素的指针(C)

来自分类Dev

c-指向结构内部结构的void指针

来自分类Dev

指针数组(指向结构)

来自分类Dev

指向结构体的指针

来自分类Dev

指向结构的空指针

来自分类Dev

指向C ++结构的指针

来自分类Dev

Qt指向结构的指针

来自分类Dev

双指针指向结构

来自分类Dev

Fortran指向结构的指针

来自分类Dev

cin指向结构的指针

来自分类Dev

指向结构数组的指针

来自分类Dev

指向结构变量的指针

来自分类Dev

指向指针成员结构的指针

来自分类Dev

在C中声明一个指向结构的指针的数组,但直到需要时才为结构分配内存

来自分类Dev

指向不同结构实例的结构指针

来自分类Dev

包含指向其他结构的指针的结构

来自分类Dev

指向结构(或缺少结构)的指针

来自分类Dev

使用结构vs指向结构的指针

来自分类Dev

C结构,指向结构的联合指针

来自分类Dev

声明内部结构?

来自分类Dev

如何为P / Invoke声明指向结构的指针?

来自分类Dev

指向C中的前向声明结构数组的指针

来自分类Dev

如何声明指向易失性结构的指针

来自分类Dev

如何修改指向void函数内部结构的指针

来自分类Dev

指向结构的指针满足接口

来自分类Dev

指向结构体数组的指针