• Revista PROGRAMAR: Já está disponível a edição #53 da revista programar. Faz já o download aqui!

dark_splinter

[Resolvido] Duvida

5 mensagens neste tópico

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

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  :D...

0

Partilhar esta mensagem


Link para a mensagem
Partilhar noutros sites

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...

0

Partilhar esta mensagem


Link para a mensagem
Partilhar noutros sites

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 .... :D

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  :D...

Se me confirmarem o raciocinio tenho a minha duvida esclarecida  :D

0

Partilhar esta mensagem


Link para a mensagem
Partilhar noutros sites

aquela linha de codigo serviu para o programa "pedir" ao computador a memoria necessaria para alocar aquele tipo de dados. basicamente foi isso que aconteceu :D

0

Partilhar esta mensagem


Link para a mensagem
Partilhar noutros sites

já consegui captar ... e as coisas já me tão dar bem  :biggrin:... obrigadão pela dica  ;)

0

Partilhar esta mensagem


Link para a mensagem
Partilhar noutros sites

Crie uma conta ou ligue-se para comentar

Só membros podem comentar

Criar nova conta

Registe para ter uma conta na nossa comunidade. É fácil!


Registar nova conta

Entra

Já tem conta? Inicie sessão aqui.


Entrar Agora