Qual é a diferença entre "." e "->" na linguagem c?

O alvo" ." ponto funciona em objetos; seta funciona em ponteiros para objetos.

Vamos dizer um exemplo de estrutura em c

se você tem um objeto de estrutura, você o estará usando / acessando com "." e se você tiver um ponteiro apontando para a estrutura, o mesmo será feito por "->"

e se você estiver trabalhando em c ++ abaixo das linhas de código com ajuda

  1. std :: string str ("foo"); std :: string * pstr = new std :: string ("foo"); str.size (); pstr-> size ();

estudante de estrutura {int a;

Nome do personagem[] ;

Int roll;

};

estudante de estudante;

Variáveis ​​de acesso em struct

Student.a = 10;

Nome do aluno

=

"qualquer nome";

Student.roll = 101

"." oerator usa para acessar variáveis ​​da estrutura. Basicamente, aqui estamos acessando a variável diretamente.

nó struct {

Dados int;

Char c;

};

nó struct * p;

p-> dados = 10;

p-> c = 'A';

"->" usado com ponteiro para acessar variáveis ​​da estrutura. Aqui acessamos variáveis ​​do endereço de memória

O operador de ponto é usado ao trabalhar com uma estrutura ou união diretamente. O operador de seta é usado com um ponteiro para uma estrutura ou união. Por exemplo,

  • struct employee
  • {
  • nome do caractere [80];
  • int idade;
  • salário flutuante;
  • } emp;
  • estrutura empregado * p = & emp;

Você escreveria o código a seguir para atribuir o valor 123.23 ao membro salarial da variável de estrutura emp:

salário = 123,23;

No entanto, a mesma atribuição usando um ponteiro para emp seria

p-> salário = 123,23;

Espero que ajude.

O operador de ponto trabalha em estruturas.

A seta funciona em ponteiros para estruturas.

Exemplo:

  1. Foo f; f.foo ();

Vs.

  1. Foo * f = malloc (sizeof * f); f-> foo (); // ou, o equivalente à moda antiga: (f *). Foo ();

A seta é apenas um atalho para remover a referência de um ponteiro e, em seguida, chamar o operador de ponto nele.

O mesmo se aplica às classes C ++.