Структура - это просто еще один тип Си, поэтому переменные, которые он использует для определения, могут быть созданы как обычные экземпляры или указатели:
int a, *pA=NULL; //normal instance, pointer instance
struct edge
{
int x;
int y;
int weight;
struct edge *link;
}sEdge, *front = NULL; //normal instance, pointer instance
И, как и для любой переменной указателя, нужнычтобы указывать на собственную память, прежде чем ее можно будет безопасно использовать: (примеры)
int main(void)
{
// both variable types are handled the same way...
pA = &a; //point pointer variable to normal instance of `int a`
front = &sEdge;//point pointer `front` to instance of 'struct edge'
//allocate memory, resulting in assigned address with associated memory.
pA = malloc(sizeof(*pA));
front = malloc(sizeof(*front));
...
РЕДАКТИРОВАТЬ , чтобы ответить на вопрос в комментариях:
Этот небольшой пример не выдает ошибок или предупреждений.(Отредактируйте свой вопрос выше или, еще лучше, опубликуйте другой вопрос, показывающий детали того, что вы видите.)
struct edge
{
int x;
int y;
int weight;
struct edge *link;
}*front = '\0';
int main(void)
{
struct edge tree[10];
return 0;
}