Jump to content

Recommended Posts

Posted

Bem este é o meu primeiro post no portugal-a-programar  😁

E então a duvida é a seguinte:

neste codigo:

#include <stdio.h>
#include <string.h>
#include <stdlib.h>

typedef struct sPessoa
{
  int Idade;
  char Nome[20+1];
  struct sPessoa *Prox;
} PESSOA;

typedef PESSOA* FILA ;


void Inic(FILA* Fila)
{
  *Fila=NULL;
}


void Inserir(FILA* Fila, int Idade, char* Nome)
{
  if (*Fila==NULL)
 {
	*Fila = (PESSOA*) malloc(sizeof(PESSOA));
	if (*Fila==NULL) return;
	(**Fila).Idade = Idade;
	strcpy((**Fila).Nome, Nome);
	(**Fila).Prox=NULL;
 }
  else
 Inserir(& (**Fila).Prox, Idade, Nome);
}

E n tou perceber muito bem o que acontece nesta linha: 

*Fila = (FILA) malloc(sizeof(PESSOA));

A minha ideia é que sendo FILA um pointer para estrutura PESSOA o que ele vai fazer é alocar em *fila(que é um pointer que tá a ser usado por outro) uma estrutura PESSOA que tá ser apontada pelo pointer *fila.... e para acedermos a essa estrutura temos de **fila .... exemplo (**fila).idade ...

Ésta e ideia com que tou .... mas n tenho bem a certeza .... podiam comentar sff  😄 ...

Posted

ele aloca memória necessária por um tip de dados PESSOA, e cria um apontador para FILA, cujo nome do apontador será 'fila'. malloc aloca memória que tu pedes, útil nas situações que tanto podes querer trabalhar com 3 elementos como 5000. neste caso, ele cria um apontador, que aponta para um endereço na memória, que o programa reservou para alojar aquela PESSOA, e *fila é um apontador para isso.

não sei se era esta a tua duvida...

Posted

obrigadão  🙂 ... era mais ou menos isso... resumindo ele vai alocar um tipo PESSOA que e este tipo PESSOA tá a ser apontado por *fila....

isto é : fila = Endereco de *fila....  *fila = Endereço de PESSOA  .... **fila = A estrutura PESSOA .... 😄

E o que aquela linha de codigo fez foi  em *fila que era igual NULL ....  pos a *fila a apontar para uma estrutura PESSOA que ficou alocada em memoria  😄 ...

Se me confirmarem o raciocinio tenho a minha duvida esclarecida  😄

Create an account or sign in to comment

You need to be a member in order to leave a comment

Create an account

Sign up for a new account in our community. It's easy!

Register a new account

Sign in

Already have an account? Sign in here.

Sign In Now
×
×
  • Create New...

Important Information

By using this site you accept our Terms of Use and Privacy Policy. We have placed cookies on your device to help make this website better. You can adjust your cookie settings, otherwise we'll assume you're okay to continue.