When I compile and run this code in Linux , it shows a strange result. I think it's rubbish from memory. What is happening to him to show this result, and how can I resolve it?
Command lines to compile code
gcc -c aluno.c
gcc -c test.c
gcc test.o aluno.o -o test.bin
Result
Studentfile.h
/*TAD:Aluno(matricula,nome,curso)*/typedefstructalunoAluno;/*Alocaeretornaumalunocomosdadospassadosporparâmetro*/Aluno*novo(intmatricula,char*nome,char*curso);/*Liberaamemóriadeumalunopreviamentecriado*/voidlibera(Aluno*aluno);/*Copiaosvaloresdeumalunoparaasreferênciasinformadas*/voidacessa(Aluno*aluno,int*matricula,char*nome,char*curso);/*Atribuinovosvaloresaoscamposdeumaluno*/voidatribui(Aluno*aluno,intmatricula,char*nome,char*curso);/*RetornaotamanhoembytesdoTADaluno*/intsize();
Studentfile
#include<stdio.h>#include<stdlib.h>#include<string.h>typedefstructaluno{intmatricula;charnome[50];charcurso[20];}Aluno;Aluno*novo(intmatricula,char*nome,char*curso){Aluno*a;a=malloc(sizeof(Aluno));a->matricula=matricula;strcpy(a->nome,nome);strcpy(a->curso,curso);}voidlibera(Aluno*aluno){free(aluno);}voidacessa(Aluno*aluno,int*matricula,char*nome,char*curso){matricula=(int*)&aluno->matricula;nome=(char*)&aluno->nome;curso=(char*)&aluno->curso;}voidatribui(Aluno*aluno,intmatricula,char*nome,char*curso){aluno->matricula=matricula;strcpy(aluno->nome,nome);strcpy(aluno->curso,curso);}intsize(){return(int)sizeof(Aluno);}
Test.cfile
intmain(){Aluno*a;a=malloc(sizeof(size()));a=novo(123,"victhor","computacao");
int *matricula;
char *nome, *curso;
acessa(a,matricula,nome,curso);
printf("Matrícula: %d\n",*matricula);
printf("Nome: %s\n", nome);
printf("Curso: %s\n", curso);
return 0;
}