首页
学习
活动
专区
圈层
工具
发布
首页
学习
活动
专区
圈层
工具
MCP广场
社区首页 >问答首页 >C结构澄清

C结构澄清
EN

Stack Overflow用户
提问于 2013-01-07 18:16:15
回答 3查看 95关注 0票数 2

我正在阅读aircrack源代码,并注意到了结构的许多不同用途。例如:

结构选项{.} opt; 结构{.}投票;

我认为结构的一般格式是

结构{.};

结构{.} foo;

opt的目的是什么,为什么vote没有定义类型?

EN

回答 3

Stack Overflow用户

回答已采纳

发布于 2013-01-07 18:21:50

typedef创建类型别名。通过以下方式:

代码语言:javascript
运行
复制
typedef struct { /* ... */ } vote;

我们创建一个匿名结构,其中vote是别名。

代码语言:javascript
运行
复制
struct option { /* ... */ } opt;

它声明类型为struct option,并声明类型为struct option的变量opt

票数 4
EN

Stack Overflow用户

发布于 2013-01-07 18:21:08

在C中,创建变量的方式是:

代码语言:javascript
运行
复制
<type>  <variable-name>;

这一点显而易见,如下所示:

代码语言:javascript
运行
复制
int foo;

虽然不那么明显,但与

代码语言:javascript
运行
复制
struct option {...} opt;

类型为struct option {...},变量名为opt

因此,这一行只创建一个名为opt的变量,它是一个结构,包含所有描述的成员。

在这一行之后,您还描述了结构option,因此您可以再次重用该名称,而无需重新描述结构的成员:

代码语言:javascript
运行
复制
{
    /* make structure, and variable opt */
    struct option { int alpha; int beta; } opt;

    /* Use the structure previously defined */
    struct option second_opt;
}
票数 2
EN

Stack Overflow用户

发布于 2013-01-07 18:25:14

类型定义为struct名称提供了一个别名,特别是当struct有一个很长的名称,并且您希望将它重命名为更短的名称时。

说你有

代码语言:javascript
运行
复制
struct very_large_screen_metrics_info{};

稍后您可以将它重命名为:

代码语言:javascript
运行
复制
typedef struct very_large_screen_metrics_info screen_info;

struct定义中发生的事情是,类型定义与结构定义一起提供。因此,示例中的命名约定是完全有效的,并且是常规命名约定的替代。这些类型与您可能预期的一样,optvote

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

https://stackoverflow.com/questions/14201645

复制
相关文章

相似问题

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