首页
学习
活动
专区
圈层
工具
发布
首页
学习
活动
专区
圈层
工具
MCP广场
社区首页 >问答首页 >将结构定义为数组是什么意思?

将结构定义为数组是什么意思?
EN

Stack Overflow用户
提问于 2019-11-25 09:30:48
回答 2查看 100关注 0票数 7

我书中的图邻接列表代码是这样给出的:

代码语言:javascript
运行
复制
typedef struct vertexNode //vertexNode in an AdjacencyList
{
    VertexType data; 
    EdgeNodeType *firstEdgeNode;

} VertexNode, AdjList[MAXVEX];

AdjList adjList; # adjList is a MAXVEX-size array 

我被类型定义中的最后一行搞糊涂了:typedef struct{...} AdjList[MAXVEX]

我能理解的形式有:

代码语言:javascript
运行
复制
typedef struct{
...
} VertexNode,

VertexNode AdjList[MAXVEX]; # AdjList is a MAXVEX-size array 

代码语言:javascript
运行
复制
struct{
...
} AdjList[MAXVEX]; # AdjList is a MAXVEX-size array 
EN

回答 2

Stack Overflow用户

发布于 2019-11-25 09:52:14

从语法上讲,typedef实际上是一个存储类,就像staticextern一样,类型别名声明读起来就像变量声明。例如。

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

x声明为int类型的变量,而

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

x声明为表示int的类型别名。

类似地,

代码语言:javascript
运行
复制
struct vertexNode {
    ...
} VertexNode;

我会将VertexNode声明为struct vertexNode变量,但是添加typedef会使其成为struct vertexNode的别名。注意,和int一样,struct vertexNode { ... } (整个东西)也是一种类型。它首先定义struct vertexNode,然后引用它。

此外,在使用逗号时,数组声明的行为可能看起来很奇怪:

代码语言:javascript
运行
复制
int x, y[5];

x声明为int,同时将y声明为5 int的数组。(函数和指针也是这样的。)在这个网站上还有其他关于它的问题。

把所有东西放在一起,如果去掉typedef,你的问题是这样的

代码语言:javascript
运行
复制
struct vertexNode
{
    VertexType data; 
    EdgeNodeType *firstEdgeNode;
} VertexNode, AdjList[MAXVEX];

这将声明类型struct vertexNode、类型struct vertexNode的变量VertexNodeMAXVEX struct vertexNodes的数组AdjList。添加typedef意味着VertexNode将成为struct vertexNode的别名,而<代码>d34将成为<代码>d35<代码>d36s数组的别名。我个人不建议这样写,但我猜它很简洁。

票数 7
EN

Stack Overflow用户

发布于 2019-11-25 09:54:57

这是一个示例代码。

代码语言:javascript
运行
复制
#include <stdio.h>

typedef char STR[1024];

int main() {
    STR a = "1234";       // == char a[1024]
    printf( "%s\n", a );

    return 0;
}

我编写了一个数据类型为char的示例。您可以将其替换为任何类或结构。

所以..。你的代码..

AdjList aVertexNode a[MAXVEX]相同

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

https://stackoverflow.com/questions/59024134

复制
相关文章

相似问题

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