Ir ao conteúdo
  • Cadastre-se

C++ Nao entendo Struct com Ponteiro


Posts recomendados

Opa, gostaria de uma ajuda de vocês aqui, estou com um problema em um trabalho da faculdade, porém não quero colar, quero apenas uma ajuda para entender algumas partes do código que eu meio que SEI e nao sei o que sao e para que servem, me ajudem se possível.

 

<>

struct no{
                int dado;
                struct no *prox;
};
 
struct lista{
                struct no* inicio;
};
 
void operacao_lista(int valor, struct lista* l){
               
                struct no *ptr = (struct no*) malloc(sizeof(struct no));
                struct no *it = l->inicio;
               
                if(ptr != NULL){
                               ptr->dado = valor;
                               ptr->prox = NULL;           
                               if(l->inicio == NULL){
                                               l->inicio = ptr;
                               }
                               else
                               {
                                               while(it->prox != NULL){
                                                               it = it->prox;
                                               }
                                               it->prox = ptr;
                               }
                }
}

 

Duvidas: Da onde surgiu o PTR ?

               Da onde surgiu o it ?

               E o que faz isso " -> " ? 

 

 

Agradeço muito se puderem ajudar

  • Curtir 1
Link para o comentário
Compartilhar em outros sites

1 hora atrás, OcaraMaisLINDOHAHAH disse:

Da onde surgiu o PTR ?

daqui

1 hora atrás, OcaraMaisLINDOHAHAH disse:

struct no *ptr = (struct no*) malloc(sizeof(struct no));

 

 

1 hora atrás, OcaraMaisLINDOHAHAH disse:

 Da onde surgiu o it ?

daqui

1 hora atrás, OcaraMaisLINDOHAHAH disse:

struct no *it

 

1 hora atrás, OcaraMaisLINDOHAHAH disse:

E o que faz isso " -> " ? 

isto significa que é para uma estrutura e não um dado dela

acessa o endereço de memoria 

adicionado 31 minutos depois
//estrutura donó
struct no{		
				//dado da lista
                int dado;
                //ponteiro para avancar na lista
                struct no *prox;
};
 //estrutura da lista
struct lista{
				//inicio da lista
                struct no* inicio;
};
 
//declaracao de funcao com 2 parametros
void operacao_lista(int valor, struct lista* l){
               	//criando um novo no chamado ptr alocado dinamicamente isto significa lista dinamica
                struct no *ptr = (struct no*) malloc(sizeof(struct no));
                //criando um novo ponteiro chamado it
                struct no *it = l->inicio;
               //se ptr nao for vazio
                if(ptr != NULL){
                				//ptr dado recebe o valor
                               ptr->dado = valor;
                               //faz o fim da lista sempre apontar para null
                               ptr->prox = NULL;       
							     
                               if(l->inicio == NULL){
                                               l->inicio = ptr;
                               }
                               else
                               {				
                                               while(it->prox != NULL){
                                               	//mantem a linearidade
                                                               it = it->prox;
                                               }
                                               it->prox = ptr;
                               }
                }
}

 

  • Obrigado 1
  • Amei 1
Link para o comentário
Compartilhar em outros sites

ponteiro-> é um jeito mais curto de escrever de (*ponteiro). , é uma abreviação mais legível.

 

Na função operacao_lista por exemplo você recebe um ponteiro l para uma struct lista como parâmetro:

struct lista* l

Então para acessar a struct para a qual o ponteiro l aponta seria necessário desreferenciar o ponteiro fazendo *l , e aí pode acessar campos da struct usando o operador de acesso ponto ( . ) desse jeito:

(*l).inicio

Mas isso não é algo prático de digitar, e dependendo se isso estiver dentro de outros parênteses ou expressões pode afetar a legibilidade do código.

 

Então criaram um operador com outra simbologia para fazer a mesma coisa, que é a seta -> .

 

Logo, o mesmo campo da struct apontada pelo ponteiro l também pode ser acessado assim:

l->inicio

 

  • Obrigado 2
  • Amei 1
Link para o comentário
Compartilhar em outros sites

2 horas atrás, OcaraMaisLINDOHAHAH disse:

quero apenas uma ajuda para entender algumas partes do código que eu meio que SEI e nao sei o que sao e para que servem, me ajudem se possível

 

Então não foi você que escreveu esse código?

O que você escreveu disso? O que está tentando resolver?

  • Curtir 1
  • Amei 1
Link para o comentário
Compartilhar em outros sites

@arfneto Na verdade é um trexo de codigo para a gente ( alunos ) ler e citar qual a finalidade do mesmo, tipo para que serve 

adicionado 1 minuto depois

@isrnick a sim, cara muito obrigado mesmo a todos vcs, realmente estava quebrando a cabeça aqui . . 

adicionado 2 minutos depois

@herbertbahia Caramba, estava tudo ali pelo jeito mesmo, cara muito obrigado mesmo, é que realmente eu estava perdido com esse código, mais agora ja sei como fornecer a resposta devida.

  • Curtir 3
Link para o comentário
Compartilhar em outros sites

Crie uma conta ou entre para comentar

Você precisa ser um usuário para fazer um comentário

Criar uma conta

Crie uma nova conta em nossa comunidade. É fácil!

Crie uma nova conta

Entrar

Já tem uma conta? Faça o login.

Entrar agora

Sobre o Clube do Hardware

No ar desde 1996, o Clube do Hardware é uma das maiores, mais antigas e mais respeitadas comunidades sobre tecnologia do Brasil. Leia mais

Direitos autorais

Não permitimos a cópia ou reprodução do conteúdo do nosso site, fórum, newsletters e redes sociais, mesmo citando-se a fonte. Leia mais

×
×
  • Criar novo...

Ebook grátis: Aprenda a ler resistores e capacitores!

EBOOK GRÁTIS!

CLIQUE AQUI E BAIXE AGORA MESMO!