TI - Anderson Moreira
Archive for the "TI" Category
A coisa que mais me deixa irritado quando ministro aula com as turmas mais avançadas aqui de SI é que os alunos ainda não consegue entender o conceito correto de ponteiro. Muitas vezes por conta da preguiça, que só lembram do assunto quando tem disciplina, ou outras vezes por conta da falta de problemas reais para tentar conseguir visualizar o conceito. Por essa razão segue um pequeno (pequeno mesmo!) sobre o uso de ponteiros. Quem tiver dúvida aconselho a comprar esse livro, ou esse, ou busca algo na Internet.
A memória do computador ou memória RAM (Random Access Memory), nada mais é do que um espaço físico de armazenamento de dados temporários, de uso do sistemas de computadores. Ela possui setores que armazenam dados, estes que são declarados em uma aplicação como variáveis, ponteiros, referencias e outros recursos do software.
O consumo dos dados na memória, varia de acordo com o seu tipo de dados (int, char, long …), sendo que na declaração de um ponteiro também é declarado o seu tipo, vejamos:
cout << *p_value << endl;
Repare que no código acima a declaração do ponteiro "p_value" recebe o endereço da variavel "address_number" pelo operador de referência "&", em seguida o valor apontado por "p_value" é apresentado em tela. Repare ainda que a exibição do valor contido na variavel "address_number" é exibido pelo ponteiro "p_value", devemos observar que para exibir o valor apontado por um ponteiro é necessário a utilização do operador "*" antes do nome do ponteiro.
cout << p_value << endl;
Utilizando o operador "new" a aplicação irá receber um endereço de memória em caso de sucesso, mas se algo der errado a solicitação de alocação de memória irá obter um valor nulo (NULL). Por isso é crucial que a cada pedido de alocação de memória, o desenvolvedor verifique tal disponibilidade para não causar danos a aplicação.
O operador delete, devolve a memória alocada pelo operador "new", podendo está ser solicitada novamente, de acordo com as necessidades da aplicação.
Uma observação muito importante é que após utilizar o operador delete para um ponteiro, apenas estamos dizendo para o compilador devolver a memória para a área disponível, mas isto não remove o endereço de memória armazenado pelo ponteiro.
Se por engano uma segunda chamada ao operador delete for efetuada para desalocar o ponteiro para a memória, está ação resultaria na quebra do sistema. Logo atribuir a constante NULL para o ponteiro desalocado, remove a referência ao endereço de memória existente como seu valor, o que evita o compilador efetuar uma tentativa de desalocação de memória para uma área já removida da aplicação.
Uma referência é um nome alternativo(Alias) para uma variável declarada no sistema. Recurso no qual é muito utilizado na passagem de parâmetros para funções.
A utilização da referência, se dá, com a colocação do operador "&" na declaração da variável, após o tipo de dados e antes da declaração do nome, vejamos:
cout << "valor: " << ref << endl;
cout << "Endereco de memoria da variavel x: " << &x << endl;
cout << "Endereco de memoria da variavel p: " << &ref << endl;
Reparem que no código acima, a declaração da variável ref possui o "&" (e comercial) antes do seu nome. Podemos ainda verificar que pref possui o mesmo endereço da variável referenciada.
Nas postagens seguintes desta série veremos mais sobre os ponteiros e as referências, utilizando-as em funções, objetos e métodos de classes. Recurso imprescindível para uma aplicação em C++.
Aluno, IFPE, TI cpp, ponteiro, programação, referência
August 31st, 2012 anderson
Aluno, TI estágio, neoenergia, oportunidade
Projeto linguagens pesquisa videogame google calendarios internet sistemas embarcados aulas sistemas operacionais ifpe mundo linux tcc avaliação robot ubuntu java alunos arquitetura programação diversão TI inovação windows exercícios estágio c microsoft horário