Estava estudando C e ao fazer um código que envolve estruturas e ponteiros tive um problema de retorno do valor de uma das variaveis da estrutura. Aparece sempre "segmentantion Fault" quando tento imprirmir na função "main" o valor de um inteiro que é atribuído a uma das variáveis da estrutura. Abaixo segue o código:
#include <stdlib.h>
#include <stdio.h>
struct Lista *insere_final(struct Lista *n, int x); //prototipo da funcao
struct Lista{
int valor;
struct Lista *proximo; //ponteiro para a proxima entrada da lista
//uso de recursividade. Uma struct dentro de outra
};
int main(){
struct Lista *inicio;
insere_final(inicio, 10);
printf("O valor fora da funcao de inicio->valor e: %d \n", inicio->valor);
return 0;
}
struct Lista *insere_final(struct Lista *n, int x){
struct Lista *novo=(struct Lista *)malloc(sizeof(struct Lista)); //alocou memoria dinamicamente para a lista
novo->valor=x;
if(n==NULL){//lista nao esta vazia
printf("n esta vazio! \n");
novo->proximo=NULL;
printf("1 - O valor dentro da funcao de novo->inicio: %d \n", novo->valor);
return novo; //novo no sera o inicio da lista
}
else{//lista nao esta vazia-vamos ao final para inserir o no
struct Lista *temp=n; //criando referencia ao primeiro no
while(temp->proximo!=NULL){//e preciso ir ao ultimo no
temp=temp->proximo;
}
novo->proximo=NULL;
temp->proximo=novo;//o ultimo no apontara para o novo no
printf("Entrou em else e esta verificando temp \n");
return n;
}