两个结构体声明相互包含对方的指针,不需要额外做点什么就能通过编译?

wow334 2020-02-27 10:33:17
a.h文件中:

#ifndef _A_H
#define _A_H

typedef struct dog {

struct fish * fish1; // 包含下面将要声明的结构体fish指针
int weight;

}dog;

typedef struct fish {
struct dog * dog1; // 包含上面的dog指针
int weight;

}fish;

#endif


visual studio 2017和c语言书上语法各种不同的地方让我很是郁闷,使我都没法通过实际运行例子来看语法对不对了。
...全文
282 4 打赏 收藏 转发到动态 举报
AI 作业
写回复
用AI写文章
4 条回复
切换为时间正序
请发表友善的回复…
发表回复
apkipa1 2020-02-28
  • 打赏
  • 举报
回复
本来就可以,我想你理解错了书本的意思。指针随便你指什么类型都可以,就算是从未出现过的结构体也行(用迂腐的语言讲,这是不完整的类型,相对应的是完整类型),只不过不能解引用罢了。
自信男孩 2020-02-28
  • 打赏
  • 举报
回复
不建议把结构体互相包含,这样做的意义是什么?相互之间定义使用起来也不好区分吧

如果需要,可以再定义一个结构体包含这两个结构体的内容。
qybao 2020-02-27
  • 打赏
  • 举报
回复
这两个结构体其实结构一样,只是名字不一样,定义一个结构体其实就可以了 typedef struct anystr { Any any; int weight; } fish, dog, *Any;
寻开心 2020-02-27
  • 打赏
  • 举报
回复
结构的定义要解决什么事儿呢? 它只是确定结构的大小,每个元素各自占据多大地方 指针都是一样的,64位系统占据8个字节, 你说知道他是什么类型的指针有多大的差异呢 你再定一个这里根本没有导结构类型估计都能过 typedef struct dog { struct fish * fish1; // 包含下面将要声明的结构体fish指针 struct cat * cat; struct monkey * monkey; int weight; }dog;

70,030

社区成员

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

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