мне дали код, чтобы построить на, и я наткнулся на несколько странных структур:Почему массив может быть объявлен в структуре таким образом и как его использовать?
typedef struct graph_t* Graph;
typedef struct vertex_t* Vertex;
struct vertex_t {
int id;
char *label;
//Implement a way to store edges...
};
struct graph_t {
/*# vertices...*/
int order;
/*# edges...*/
int size;
/*Array of vertices...*/
Vertex vertices;
};
Вы можете, вероятно, видеть, что это способ хранения графа. Однако я смущен, так как объявлен «массив вершин»: Vertex vertices
. Нет ничего, чтобы указать, что vertices
на самом деле является массивом, он просто кажется единственной вершиной (что не имело бы смысла, так как граф может иметь много вершин).
Как можно объявить массив таким образом и почему это работает?
Также, как бы я начал инициализировать (?) Массив и как он будет использоваться? Точно так же, как обычный массив?
EDIT: Я забыл добавить typedefs и некоторые отсутствующие данные, кажется, что существует typedef vertex_t*
, что делает это законным?
Простой: это не массив. Просто потому, что комментарий говорит, что его массив не означает, что это массив. – ckruczek
@ckruczek Если это так, как его можно использовать в качестве массива (как предполагал разработчик)? – JavascriptLoser
Не может. Это не массив и не может использоваться как массив. – ckruczek