【发布时间】:2020-03-20 06:58:11
【问题描述】:
我书中的图邻接表代码由:
typedef struct vertexNode //vertexNode in an AdjacencyList
{
VertexType data;
EdgeNodeType *firstEdgeNode;
} VertexNode, AdjList[MAXVEX];
AdjList adjList; # adjList is a MAXVEX-size array
我对 typedef 中的最后一行感到困惑:typedef struct{...} AdjList[MAXVEX]。
我能理解的形式是:
typedef struct{
...
} VertexNode,
VertexNode AdjList[MAXVEX]; # AdjList is a MAXVEX-size array
或
struct{
...
} AdjList[MAXVEX]; # AdjList is a MAXVEX-size array
【问题讨论】:
-
注意:这种
typedef可以解锁一些技巧,例如implicit reference semantics in C。 -
非常感谢。这个先前的问题似乎也是我的困惑。那么..
AdjList adjList中的AdjList是指针类型吗? -
不。
adjList如果是普通声明,则为数组,仅当它是函数的参数时才为指针(就像向函数声明数组参数与声明指针参数一样)。