首页
学习
活动
专区
工具
TVP
发布
社区首页 >问答首页 >C++中结构的用途,类型定义结构

C++中结构的用途,类型定义结构
EN

Stack Overflow用户
提问于 2009-07-05 12:13:26
回答 4查看 13.2K关注 0票数 15

在C++中,可以创建一个结构:

struct MyStruct
{
    ...
}

还可以执行以下操作:

typedef struct
{
    ...
} MyStruct;

然而,据我所知,两者之间没有明显的区别。哪一个更可取?如果没有区别,为什么这两种方式都存在呢?在风格或可读性方面,一个比另一个好吗?

EN

回答 4

Stack Overflow用户

回答已采纳

发布于 2009-07-05 12:21:50

typedef版本是

typedef foo bar;

它定义了一个新的"type“bar作为foo的别名。在您的例子中,foo恰好是一个结构。在C语言中,这是引入新“类型”的唯一方法(在引号中,因为它们并不真正等同于int、float和co)。在C++中,这并不是很有用,因为C++的设计目的是使新类型的定义比C更简单、更完整(至少在C++刚开始的时候是这样),而且C++甚至不需要引用以前声明的结构(或类)。

票数 12
EN

Stack Overflow用户

发布于 2009-07-05 12:19:07

后者是为了与C语言兼容-在新的C++代码中使用第一个。

票数 7
EN

Stack Overflow用户

发布于 2009-07-05 12:16:01

您将使用typedef,因此在声明该结构的变量时不需要指定struct关键字。

如果不使用typedef:

struct MyStruct foo;

使用typedef:

MyStruct foo;

基本上,您使MyStruct看起来像一个新类型,因此它还实现了某种级别的类型抽象,因为程序员不需要显式地知道它是什么类型。您可以将MyStruct传递到一个函数中,操作其中的数据并返回它,程序员无需担心实际发生的事情。

出于这个原因,许多C标准库都使用了typedefs。

票数 2
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/1083959

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档