以下のコードを実行しようとしていますが、セグメンテーションメッセージが返されます。 リストを初期化してから最初のノード(cabecera)をインクルードしてデータを印刷しようとしていますが、セグメント化エラーが返されます。 どうか私を助けてください、問題を知っていません。 ありがとうございます。cのセグメンテーションエラー
#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çoisFabreLはポインタですが、なぜそれが問題になるのでしょうか? –
@ Shiva:それはポインタですが、値渡しです。 'L 'に代入することは、その関数の外部では何の効果もありません。 – Mat