9026|3

7671

帖子

2

TA的资源

五彩晶圆(高级)

楼主
 

简单说一下typedef struct [复制链接]

本帖最后由 freebsder 于 2018-12-4 00:45 编辑

问题来自
typedef struct Node
{
    ElemType data;
    struct Node *next;
}Node;
改成
typedef struct
{
    ElemType data;
    struct Node *next;
}Node;
就出错了,是为什么。
前两天也有帖子问类似问题。这里简单说一下。


这个问题是名字空间的问题,名字空间在c里面几乎没人提,那是因为道行不够,没有其他原因。
空间就是分割。类型有类型的名字空间,变量有变量的名字空间,割裂开,所以类型名字和变量名字,除了保留类型,他们名字一样的时候没有啥问题。
typedef struct NODE{} NODE,里面,struct NODE是一个类型,(struct NODE)是类型的名字,因此下面出现的next要用这个类型,就得用它的名字(struct NODE)。然后,typedef type NODE,建立一个类型,取名叫NODE。NODE!=(struct NODE)所以没毛病。 虽然NODE出现两次,但作用和名字不一样。
多说一句,有了空间,也就有了可见性,类型和变量的声明,实质是名字可见性,类型和变量的定义,实质是实体可见性(c++,java里面有private public等可见性修饰,扯远了)。所以对于struct Node *next这里,类型名字是可见的,上面已经用struct NODE挂了号,也就是有声明,可以喊它的名字,重点是用名字,而不是用这个结构体,因为结构体此时还没定义完全。
此帖出自单片机论坛

最新回复

结构体的名称最好与数据类型的名字设置成不一样   详情 回复 发表于 2018-12-5 11:48
点赞 关注(2)
 

回复
举报

6040

帖子

202

TA的资源

版主

沙发
 
腐叔讲的到位,不完全类型是这个问题的本质
此帖出自单片机论坛
 
 

回复

2700

帖子

0

TA的资源

五彩晶圆(初级)

板凳
 
腐叔讲的到位,不完全类型是这个问题的本质
此帖出自单片机论坛
 
个人签名作为一个水军,就是尽量的多回帖,因为懂的技术少,所以回帖水分大,见谅!
EEWORLD开发板置换群:309018200,——电工们免费装β的天堂,商家勿入!加群暗号:喵
 
 

回复

1371

帖子

6

TA的资源

版主

4
 
结构体的名称最好与数据类型的名字设置成不一样
此帖出自单片机论坛
 
个人签名专注智能产品的研究与开发,专注于电子电路的生产与制造……QQ:2912615383,电子爱好者群: void
 
 

回复
您需要登录后才可以回帖 登录 | 注册

随便看看
查找数据手册?

EEWorld Datasheet 技术支持

相关文章 更多>>
关闭
站长推荐上一条 1/6 下一条

 
EEWorld订阅号

 
EEWorld服务号

 
汽车开发圈

About Us 关于我们 客户服务 联系方式 器件索引 网站地图 最新更新 手机版

站点相关: 国产芯 安防电子 汽车电子 手机便携 工业控制 家用电子 医疗电子 测试测量 网络通信 物联网

北京市海淀区中关村大街18号B座15层1530室 电话:(010)82350740 邮编:100190

电子工程世界版权所有 京B2-20211791 京ICP备10001474号-1 电信业务审批[2006]字第258号函 京公网安备 11010802033920号 Copyright © 2005-2025 EEWORLD.com.cn, Inc. All rights reserved
快速回复 返回顶部 返回列表