C 请求成员 ***** 不是结构或联合

C request for member ***** in something not a structure or union

我知道有一些帖子就像这篇帖子一样,但这些帖子上的所有解决方案都没有帮助我,他们往往只是说将 l.valor 切换到 l->valor,但事实并非如此在我的案例中工作,我不明白为什么。

这是我的:

typedef struct lligada {
    int valor;
    struct lligada *prox;
} *LInt;

void insertOrd (LInt *g, int x){
    if (g != NULL) g->valor = x;
}

我得到这个:

error: request for member 'valor' in something not a structure or union if (g == NULL) g->valor = x;

我做错了什么?

PS: 这是在一个叫codeboard的平台上做的练习,是作业,我不能改变struct声明,也不能改变函数insertOrd的参数,我得用什么我进入 insertOrd 并使该功能正常工作

从结构声明中删除 *:

typedef struct lligada {
    int valor;
    struct lligada *prox;
} LInt;

顺便说一句,你的 NULL 检查被反转了。它可能应该读作 if (l != NULL).

要么你写

void insertOrd (LInt *g, int x){
    if (*g != NULL) ( *g )->valor = x;
        ^^ ^^         ^^^
}

void insertOrd (LInt g, int x){
                ^^^^^^
    if (g != NULL) g->valor = x;
          ^^
}

因为函数中参数g的类型是struct lligada **