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 **
我知道有一些帖子就像这篇帖子一样,但这些帖子上的所有解决方案都没有帮助我,他们往往只是说将 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 **