struct node;

StudyTCPIP 2012-02-29 04:45:51
在数据结构一书看到的声明,它的意思是:node为一个结构体,但没有数据成员(未为其分配内存),对吗?
...全文
484 13 打赏 收藏 转发到动态 举报
写回复
用AI写文章
13 条回复
切换为时间正序
请发表友善的回复…
发表回复
StudyTCPIP 2012-03-01
  • 打赏
  • 举报
回复
struct node{};

struct node
{
int a;
};
不行
但是我说的不是这个。是struct node;
qixing1115 2012-03-01
  • 打赏
  • 举报
回复
空的结构体要占空间,用sizeof(struct)就知道了,应该是1
i_love_c_plus 2012-03-01
  • 打赏
  • 举报
回复
这里只是声明node为一个结构体的名字,只是告诉编译器如何为node类型的变量分配内存,但单纯声明编译器不会分配内存。
jixiang1983 2012-03-01
  • 打赏
  • 举报
回复
[Quote=引用 10 楼 studytcpip 的回复:]
struct node{};

struct node
{
int a;
};
不行
但是我说的不是这个。是struct node;
[/Quote]
重复定义,自然不行。
struct node{}; //这是定义,
struct node; //这是声明,
注意区别
AnYidan 2012-02-29
  • 打赏
  • 举报
回复
[Quote=引用 7 楼 studytcpip 的回复:]
struct node;

struct node
{
int a;
};


VS2008测试没有问题,遵循最下面的声明。
[/Quote]

struct node{};

struct node
{
int a;
};
试试
Furney 2012-02-29
  • 打赏
  • 举报
回复
声明不分配内存,定义才分配内存。
StudyTCPIP 2012-02-29
  • 打赏
  • 举报
回复
struct node;

struct node
{
int a;
};


VS2008测试没有问题,遵循最下面的声明。
AnYidan 2012-02-29
  • 打赏
  • 举报
回复
[Quote=引用 3 楼 studytcpip 的回复:]
如果下面又重新定义了下变成:
struct node{
ElementType Element;
Position Next;
};

那应该遵循哪个声明和定义呢?
[/Quote]

重复定义!

hu7324829 2012-02-29
  • 打赏
  • 举报
回复
struct node{
ElementType Element;
Position Next;
};
这个算是声明

struct node{
ElementType Element;
Position Next;
} item ;
这样就给item分配了内存, 算定义
hu7324829 2012-02-29
  • 打赏
  • 举报
回复
一般来说
不占内存的叫做声明,占用一定的内存叫做定义。
StudyTCPIP 2012-02-29
  • 打赏
  • 举报
回复
如果下面又重新定义了下变成:
struct node{
ElementType Element;
Position Next;
};

那应该遵循哪个声明和定义呢?
jixiang1983 2012-02-29
  • 打赏
  • 举报
回复
定义应该这样:
struct node{ };
struct node; 这句是对结构体node的声明,未生成对象和分配内存,这样写是因为结构可能在别处定义。写成:node obj; 才会分配内存
hu7324829 2012-02-29
  • 打赏
  • 举报
回复
应该是的
不过好像没什么意义。

69,374

社区成员

发帖
与我相关
我的任务
社区描述
C语言相关问题讨论
社区管理员
  • C语言
  • 花神庙码农
  • 架构师李肯
加入社区
  • 近7日
  • 近30日
  • 至今
社区公告
暂无公告

试试用AI创作助手写篇文章吧