在一个C++开源项目中,我看到了这一点.
struct SomeClass {
...
size_t data_length;
char data[1];
...
}
Run Code Online (Sandbox Code Playgroud)
这样做有什么好处而不是使用指针?
struct SomeClass {
...
size_t data_length;
char* data;
...
}
Run Code Online (Sandbox Code Playgroud)
我唯一能想到的是使用size 1数组版本,用户不会看到NULL.还有别的事吗?
我的书中的图形邻接表代码由下式给出:
typedef struct vertexNode //vertexNode in an AdjacencyList
{
VertexType data;
EdgeNodeType *firstEdgeNode;
} VertexNode, AdjList[MAXVEX];
AdjList adjList; # adjList is a MAXVEX-size array
Run Code Online (Sandbox Code Playgroud)
我对typedef:的最后一行感到困惑typedef struct{...} AdjList[MAXVEX]。
我能理解的形式是:
typedef struct{
...
} VertexNode,
VertexNode AdjList[MAXVEX]; # AdjList is a MAXVEX-size array
Run Code Online (Sandbox Code Playgroud)
要么
struct{
...
} AdjList[MAXVEX]; # AdjList is a MAXVEX-size array
Run Code Online (Sandbox Code Playgroud)