猿问
回到首页
个人中心
反馈问题
注册登录
下载APP
首页
课程
实战
体系课
手记
专栏
慕课教程
C+中“结构”与“类型结构”的区别?
C+中“结构”与“类型结构”的区别?
在C+中,在以下方面是否有区别:
struct Foo { ... };
和
typedef struct { ... } Foo;
慕码人2483693
浏览 538
回答 3
3回答
RISEBY
在C+中,只有细微的差别。它是C的一个支撑,在C中它起了很大的作用。C语言标准(C89§3.1.2.3, C99§6.2.3,和C11§6.2.3)为不同类别的标识符指定单独的命名空间,包括标签标识符(为struct/union/enum)和普通标识符(为typedef和其他标识符)。如果你刚才说:struct Foo { ... };Foo x;您将得到一个编译器错误,因为Foo仅在标记命名空间中定义。你必须宣布它为:struct Foo x;任何时候,您想要引用Foo,你总要管它叫struct Foo..这会很快变得烦人,所以您可以添加一个typedef:struct Foo { ... };typedef struct Foo Foo;现在struct Foo(在标记命名空间中)并且只是普通的Foo(在普通标识符命名空间中)都引用相同的内容,您可以自由声明类型的对象。Foo没有struct关键词。结构:typedef struct Foo { ... } Foo;只是声明和typedef.最后,typedef struct { ... } Foo;声明匿名结构,并创建typedef为了它。因此,使用此构造,它在标记命名空间中没有名称,而在ty胡枝子名称空间中只有一个名称。这意味着它也不能提前宣布。如果要进行前向声明,则必须在标记命名空间中为其命名。.在C+中,所有struct/union/enum/class声明的行为就好像它们是隐式的。typedef‘ed,只要名称不被同名的另一个声明隐藏,请参见迈克尔·伯尔的回答全部细节。
0
0
0
打开App,查看更多内容
随时随地看视频
慕课网APP
相关分类
C++
typedef入门问题
1 回答
C
typedef入门问题
1 回答
继续浏览精彩内容
慕课网APP
程序员的梦工厂
打开
继续