初始化一个简单的列表

时间:2015-04-02 19:10:48

标签: c list

我有3个文件:main.cnode.cnode.h

在我的'node.h`中我有:

typedef struct Lista Lista;

node.c我有:

#include "node.h"
struct Lista{
        int dado;
        Lista* prox;
};

在我的main我有:

#include "node.h"
#include "<stdlib.h>"

main{
   Lista* p;
   return 0;
}

P值为:

我的列表的第一个元素或指向我列表中第一个元素的指针? 我可以访问:
p->dado(列表的第一个值)和
p->prox(指向我列表中第二个元素的指针)。

the pointer that points to the first element of the list

在哪里

3 个答案:

答案 0 :(得分:3)

p是一个未初始化的指针。取消引用它是未定义的行为。在您为其分配内存并指向p之前,您没有列表。一旦分配了内存并向其指向pp就是指向列表元素的指针。无论是第一个,还是依旧,取决于你做了什么。

答案 1 :(得分:2)

p是指向列表中第一个元素的指针。 p->(something)用于获取由其指向的变量的值。

答案 2 :(得分:1)

编写代码后,您的代码将无法编译。

在头文件中,您可以将结构创建为:

typedef struct Lista{
    int dado;
    struct Lista *prox;
}LISTA;

然后在.c中,使用以下行创建LISTA实例化和指向LISTA的指针:

LISTA *pL, l;//create instantiation and pointer to LISTA
pL = &l; //initialize pL to an instantiation of LISTA

pL = malloc(sizeof(LISTA));//assign space to pointer to LISTA  

执行这些步骤后,pL指向结构实例化的开始,拥有内存(空间)并提供从中访问成员位置值的引用:

pL->dado;
pL->prox; //also needs to be initialized and given space before use 

完成使用后请记得free(pL);