社区
C++ 语言
帖子详情
关于typedef struct求解释
老王爱上猫
2012-05-08 11:32:28
下面三种定义有什么不同?主要是第一种定义起到了什么作用,同事说有构造函数,不懂,求大牛解释。
typedef struct _A
{
}A;
typedef struct
{
}B;
struct C
{
};
...全文
198
4
打赏
收藏
关于typedef struct求解释
下面三种定义有什么不同?主要是第一种定义起到了什么作用,同事说有构造函数,不懂,求大牛解释。 typedef struct _A { }A; typedef struct { }B; struct C { };
复制链接
扫一扫
分享
转发到动态
举报
写回复
配置赞助广告
用AI写文章
4 条
回复
切换为时间正序
请发表友善的回复…
发表回复
打赏红包
northcan
2012-05-08
打赏
举报
回复
我觉得主要是这样:
(1)
typedef struct _A
{
}A;
如果是定义一个链表的Node,就一定要加上结构tag,也就是_A。
如:
typedef struct _A
{
int data;
struct _A * next;
}A;
如果没有_A,那么next指针无法声明。
(2)
typedef struct
{
}B;
除去第(1)种情况,那么结构tag用处就不是太大了。定义新类型B之后,
以后就可以直接B b;这样用了。
(3)
struct C
{
};
在有些c/c++书籍里面,一些西方国家的c大牛们,不提倡用typedef定义新的结构体类型。
他们提倡使用结构tag。也就是在声明结构变量时,用:sturct C c;。
他们说这样的代码可读性好,让人很容认识到c是一个结构体类型的变量。
jackyjkchen
2012-05-08
打赏
举报
回复
另外,有些库倾向于使用
typedef struct _A
{
}A;
而不是
typedef struct
{
}C;
是为了移植性
因为有些编译器,标准比较老,不支持匿名结构和匿名联合
jackyjkchen
2012-05-08
打赏
举报
回复
对于C++来说差别不大
对于C来说,声明A和B类型的对象不需要前面加struct,_A和C要
构造函数什么的是瞎扯,结构是否自动生成构造函数取决于C还是C++
这种风格Windows SDK普遍使用(因为是C的,能减少struct关键字的使用),Linux内核极力反对(认为typedef尽量少用,否则导致类型混乱)
呵呵,自己看着办吧
qiangv
2012-05-08
打赏
举报
回复
typedef struct _A
{
}A;
typedef struct
{
}B;
struct C
{
};
C中的最开始的定义是如下:
struct C
{
};
后来C++来了,也支持这么定义,但是和C有区别,C中使用这个结构体类型必须使用struct C,而C++可以使用struct C,也可以使用C。
后来为了方便,不管在C中还是C++中,只要按照如下写了,就可以省略struct
typedef struct
{
}B;
至于下面这个方法和有指定A没指定A都一样。
typedef struct _A
{
}A;
就是这里做了两件事,第一个A,是顶一个结构体struct A,第二个A是利用typedef重命名为A。
相当于是下面的结合:
struct _A{}
typedef struct _A A;
甚至_A可以直接用A代理。
至于构造函数是否有,只要是C++里面的结构体,不管哪种定义,都有构造函数。
《C深度解析》第7、8章 结构体/共用体/枚举,杂项(自动类型转换、大小端序等)
第7章:1. 结构体结构体定义、访问、传参,结构体对齐(offsetof宏、contaner_of宏),结构体内嵌函数指针,程序分层,模块化等。2. 共用体共用体与结构体的异同、共用体的作用、共用体举例3. 枚举第8章:自动类型转换、大小端序、
typedef
、编译器优化、extern C、程序调试、变参函数、dowhile(0)、内嵌汇编、调试版与发行版、断言
结构体定义
typedef
struct
用法详解和用法小结
typedef
是类型定义的意思。
typedef
struct
是为了使用这个结构体方便。 具体区别在于: 若
struct
node{ }这样来定义结构体的话。在定义 node 的结构体变量时,需要这样写:
struct
node n; 若用
typedef
,可以这样写:
typedef
struct
node{}NODE; 。在申请变量时就可以这样写:NODE n;其实就相当于 NODE 是nod...
【C语言】结构体定义
typedef
struct
用法详解和用法小结
结构体定义
typedef
struct
用法详解和用法小结 文章目录结构体定义
typedef
struct
用法详解和用法小结0. 前言1. 首先:在C中定义一个结构体类型要用
typedef
:2. 其次:在c++中如果用
typedef
的话,又会造成区别:3. 掌握上面两条就可以了,不过最后我们探讨个没多大关系的问题4. C/C++中
typedef
struct
和
struct
的用法5. 问答6. 用法小结 0. 前言
typedef
是类型定义的意思。
typedef
struct
是为了使用这个结构体方
struct
与
typedef
struct
的区别
typedef
是类型定义的意思。
typedef
struct
是为了使用这个结构体方便。 具体区别在于: 若
struct
node {}这样来定义结构体的话。在申请node 的变量时,需要这样写,
struct
node n; 若用
typedef
,可以这样写,
typedef
struct
node{}NODE; 。在申请变量时就可以这样写,NODE n; 区别就在于使用时,是否可以省去str
struct
和
typedef
struct
的区别
于是在声明变量的时候就可:Stu stu1;或者:student stu2;(Stu 和student 同时为Student的别名)和CHANGE a,b;方便了个人习惯,熟悉的人用CHANGE来定义int。在了解
struct
和
typedef
struct
之前,我们先学习下
typedef
的定义和用法。就必须用
struct
Student stu1;或者
struct
Stu stu1来声明。现在回到
struct
和
typedef
struct
的区别这个问题上来。另外这里也可以不写Student。
C++ 语言
64,637
社区成员
250,559
社区内容
发帖
与我相关
我的任务
C++ 语言
C++ 语言相关问题讨论,技术干货分享,前沿动态等
复制链接
扫一扫
分享
社区描述
C++ 语言相关问题讨论,技术干货分享,前沿动态等
c++
技术论坛(原bbs)
社区管理员
加入社区
获取链接或二维码
近7日
近30日
至今
加载中
查看更多榜单
社区公告
请不要发布与C++技术无关的贴子
请不要发布与技术无关的招聘、广告的帖子
请尽可能的描述清楚你的问题,如果涉及到代码请尽可能的格式化一下
试试用AI创作助手写篇文章吧
+ 用AI写文章