Ir ao conteúdo
  • Comunicados

    • Gabriel Torres

      Seja um moderador do Clube do Hardware!   12-02-2016

      Prezados membros do Clube do Hardware, Está aberto o processo de seleção de novos moderadores para diversos setores ou áreas do Clube do Hardware. Os requisitos são:   Pelo menos 500 posts e um ano de cadastro; Boa frequência de participação; Ser respeitoso, cordial e educado com os demais membros; Ter bom nível de português; Ter razoável conhecimento da área em que pretende atuar; Saber trabalhar em equipe (com os moderadores, coordenadores e administradores).   Os interessados deverão enviar uma mensagem privada para o usuário @Equipe Clube do Hardware com o título "Candidato a moderador". A mensagem deverá conter respostas às perguntas abaixo:   Qual o seu nome completo? Qual sua data de nascimento? Qual sua formação/profissão? Já atuou como moderador em algo outro fórum, se sim, qual? De forma sucinta, explique o porquê de querer ser moderador do fórum e conte-nos um pouco sobre você.   OBS: Não se trata de função remunerada. Todos que fazem parte do staff são voluntários.
    • DiF

      Poste seus códigos corretamente!   21-05-2016

      Prezados membros do Fórum do Clube do Hardware, O Fórum oferece um recurso chamado CODE, onde o ícone no painel do editor é  <>     O uso deste recurso é  imprescindível para uma melhor leitura, manter a organização, diferenciar de texto comum e principalmente evitar que os compiladores e IDEs acusem erro ao colar um código copiado daqui. Portanto convido-lhes para ler as instruções de como usar este recurso CODE neste tópico:  
Say

Duvida teorica

Recommended Posts

Galera estou estudando listas, pilhas e filas.

Eu sei usar um pouco o seguinte termo "->" mas não sei ao certo seu significado.

Alguém poderia me explicar um pouco como esse termo funciona?

obrigado

Compartilhar este post


Link para o post
Compartilhar em outros sites


struct teste {
int x;
int y;
};

struct teste UmTeste;

Com isso você criou uma variável chamada "UmTeste" do tipo "struct teste". Essa parte você já deve saber.


UmTeste.x = 0;
UmTeste.y = 2;

Pra acessar os membros da variável UmTeste você usa um ponto (.)

Isso você já deve saber também.

Agora criando uma variável dinamica.


typedef struct teste {
int x;
int y;
} Teste;

Teste *UmTeste;
UmTeste = (Teste) malloc(sizeof(Teste));

Se usar c++ em vez de c, é só trocar malloc por new.

Agora, pra acessar os campos dessa estrutura você usa um ponto, e como ela é um ponteiro você precisa colocar o asterisco na frente e parenteses pra delimitar o que é ponteiro e o que é campo da estrutura. Ficando assim:


(*UmTeste).x = 0;
(*UmTeste).y = 123;

Então, considerando isso tudo agora... o "->" é nada mais que um atalho pra você não precisar escrever esse monte de parenteses e asteriscos sempre que for acessar os campos de um ponteiro de estrutura.

Ou seja, o código abaixo é exatamente a mesma coisa do de cima:


UmTeste->x = 0;
UmTeste->y = 123;

É isso.

Compartilhar este post


Link para o post
Compartilhar em outros sites
  • Autor do tópico
  • Galera, já terminei o estudo do assunto mas tem duas coisas que não me sinto seguro(meio que decorei), se alguém puder me ajudar fico muito agradecido.

    Uma parte da estrutra :

    struct Celula {

    float valor_;

    Celula* prox_; //O que quer dizer isto especificadamente??? Um ponteiro tipo Celula ??

    Celula(float valor, Celula* prox);

    };

    Uma parte do código esta assim:

    if (base_->prox_->prox_ == NULL)

    interpretanto: (*base_).(*prox_).prox_== NULL

    Estou batendo cabeça com este termo faz tempo mas isto esta intrigante.

    (*prox_).prox_ estou acessando uma variavel prox_ dentro de uma estrutura prox_

    (*base_).prox_ estou acessando uma variavel base dentro de uma estrutura prox_

    mas ligando as duas coisas fica sem sentido.

    Alguém me da uma luz aí

    Compartilhar este post


    Link para o post
    Compartilhar em outros sites

    Parece meio estranho e dá um pouco nó na cabeça, mas é só você interpretar do mesmo jeito que você lê. A estrutura celula possui duas variáveis, uma delas é um float, a outra é um ponteiro pra outra estrutura do tipo celula.


    ---------
    | | (valor) ---> 12.3
    | CelulaA | ---------
    | | (prox) ----> | | (valor) ---> 55.5
    --------- | CelulaB | ---------
    | | (prox) ----> | | (valor) -->
    --------- | CelulaC |
    | | (prox) --->
    ---------

    Então, se você tiver tres variáveis ponteiro do tipo celula:

    Celula *CelulaA;

    Celula *CelulaB;

    Celula *CelulaC;

    Depois em algum ponto do código você declarou que:

    CelulaA->prox = CelulaB;

    e

    CelulaB->prox = CelulaC;

    Então a expressão "CelulaA->prox->prox" faz isso:

    (CelulaA->prox)->prox

    A parte entre parenteses corresponde a "CelulaB", ou seja, o endereço de celulaB. Então fica:

    (CelulaB)->prox

    CelulaB->prox corresponde ao endereço de "CelulaC".

    Então:

    CalulaA->prox->prox é o endereço de CelulaC.

    O segredo é pensar em ponteiros não como a estrutura inteira, mas apenas como um endereço onde está a estrutura.

    • Curtir 1

    Compartilhar este post


    Link para o post
    Compartilhar em outros sites
  • Autor do tópico
  • uhn, era isso que me pertubava;

    prox são variaveis diferentes(por estarem em celulalas diferentes) mas com mesmo nome.

    Acho que agora do conta de fazer uma lista sozinho.

    Só tenho a agradecer.

    Compartilhar este post


    Link para o post
    Compartilhar em outros sites

    Crie uma conta ou entre para comentar

    Você precisar ser um membro para fazer um comentário






    Sobre o Clube do Hardware

    No ar desde 1996, o Clube do Hardware é uma das maiores, mais antigas e mais respeitadas publicações 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

    ×