【发布时间】:2017-06-06 12:29:46
【问题描述】:
我正在尝试执行下面的代码,但它会返回一条分段消息。 我正在尝试初始化一个列表,然后包含第一个节点(cabecera)并打印数据,但它会返回一个分段错误。 请帮助我,不知道是什么问题。 提前谢谢你。
#include<stdio.h>
#include<stdlib.h>
typedef struct NODO{
float data;
struct nodo* next;
struct nodo* before;
} nodo;
typedef struct CABECERA{
float data;
struct nodo* next;
} cabecera;
void init(cabecera *L){
L=NULL;
}
void pushBack(cabecera *L, float e){
cabecera *newnodo;
newnodo= (cabecera*)malloc(sizeof(cabecera));
newnodo->next= NULL;
newnodo->data=e;
L=newnodo;
}
int main(){
cabecera *milista;
init(milista);
pushBack(milista, 0.5);
printf("%f\n", milista->data);
return 0;
}
【问题讨论】:
-
void init(cabecera *L){ L=NULL;你没有初始化任何东西,你只是将一个局部变量设置为NULL。你的 push_back 方法也是如此。 -
@Jean-FrançoisFabre L 是指针,为什么会成为问题?
-
@Shiva:它是一个指针,但按值传递。分配给
L在该函数之外没有任何影响。 -
@Shiva 因为在
main他们试图访问一个不指向任何地方的结构指针的成员 -
另外,
pushBack正在泄漏内存