【发布时间】:2017-10-22 14:45:12
【问题描述】:
我知道有些帖子就像这个帖子一样,但是这些帖子上的所有解决方案都对我没有帮助,他们往往只是说将 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 的平台上的练习,是作业,我不能更改结构声明,也不能更改函数 insertOrd 的参数,我必须使用我在 insertOrd 上得到的内容并制作函数工作
【问题讨论】:
-
1)
l是指向struct lligada的指针 -
l很容易与等宽字体中的1混淆,并且是单字母变量最糟糕的用法。并且函数参数的名称应该帮助用户不妨碍他们。 -
我已经更改了它以避免混淆,但它不是我设置的,我只需要完成它。
-
(*g)->valor等。如果您需要对其应用取消引用操作,隐藏在typedefs中的指针会令人困惑。
标签: c list pointers singly-linked-list