我有3个文件:main.c
,node.c
,node.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
答案 0 :(得分:3)
p
是一个未初始化的指针。取消引用它是未定义的行为。在您为其分配内存并指向p
之前,您没有列表。一旦分配了内存并向其指向p
,p
就是指向列表元素的指针。无论是第一个,还是依旧,取决于你做了什么。
答案 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);
。