Nessa seqüência continuarei falando sobre como podemos utilizar esses ponteiros tão discriminados e a melhor forma de usar a atribuição neles. Além disso mostrarei como podemos usar ponteiros void para construirmos uma fila genérica que pode literalmente guardar qualquer tipo de dado.
Isso evitará problemas no entendimento deste artigo. Todo o
conteúdo exposto aqui pode ser conseguindo deduzindo o artigo
anteriormente apresentado. Assim, estou dando uma "colher de chá" pra vocês.
Um pouco mais sobre ponteiro void
Como dito anteriormente, não é possível atribuir dados a um tipo de
dado void, mas podemos fazer com que o apontado do ponteiro
void receba algum conteúdo. A explicação para isso está num
fator muito simples de se entender. O pequeno trecho abaixo será usado
para explicar como podemos fazer uma atribuição em void:
int b, *c;
b = 9;
c = &b;
*c = 5;
Obviamente, não temos nada de novo aqui. Mas se analisarmos mais de
perto... Vamos fingir ser um compilador para ver se fica mais claro:
Aloca-se espaço para um int que é referenciado como o nome B.
Aloca-se um ponteiro do tipo int chamado de C.
B recebe 9, isto é, o espaço de memória que B referência passará a conter 9.
C que antes apontava para um lugar desconhecido receberá endereço da variável B.
O endereço que esta em C deve ser acessado e setado para 5.
Não sei se está ficando mais claro... Vamos a outro exemplo, dessa vez sem programação.
Você tem um amigo chamado Zildo, esse cara está querendo uma idéia de onde
pode conseguir algo básico sobre ponteiros void, vem falar contigo e pergunta:
- "Cara, se sabe de alguma URL onde posso ver mais sobre esses Ponteiros?"
[2] Comentário enviado por ymc em 11/06/2004 - 08:22h
Este artigo com certeza completa o primeiro. Antes estava meio vago a utilidade do ponteiro void. Com este artigo ficou mais claro pra mim e tirou algumas duvidas sobre malloc.
Otimo artigo.
[3] Comentário enviado por robson.dantas em 13/06/2004 - 09:53h
Muito bom o seu artigo.
Tenho preparado algo sobre ponteiros void, para C++; Criei uma classe genérica, que faz acesso à dados em C++ para bancos como postgres, mySQL, SQL Server e Oracle;
[4] Comentário enviado por jllucca em 14/06/2004 - 19:43h
ymc,
certamente que completa o primeiro! Como disse no inicio do segundo, eu dividi o assunto pra deixar a parte "pratica" para ser tratada nesse artigo. Mas, para quem ler o conteúdo desse segundo artigo esta no primeiro só que mais direto e sem precisar "fritas os miolos",
[5] Comentário enviado por jllucca em 14/06/2004 - 19:45h
Robson,
sobre o que eu acho é o seguinte void é excelente para C. Mas, em C++ temos algumas coisas que nos auxiliam que podem ser até melhores que o void. No seu caso, voce já pensou em usar template? Eu não conhecia isso em C++, mas seria uma alternativa mais elegante até para a classe que coloquei na sessão scripts.
[6] Comentário enviado por engos em 25/06/2004 - 10:47h
Achei bem vago esse segundo artigo, me deixou a impressão que você correu para completar o primeiro e atropelou um pouco a teoria e deixo que o conceito prático explicasse tudo por si só.
Como você mesmo disse, é o primeiro artigo de forma prática, existiu um complementar, mas nada de muito interessante.
Gostei do primeiro artigo, mas esse segundo foi mediano, entretanto deu para perceber que você conhece bem sobre o assunto, que tal um terceiro artigo mais elaborado, com conceitos técnicos e práticos proporcionais e exemplos para serem usados no cotidiano?
Lendo esse segundo fiquei com a seguinte dúvida:
Em quesito de desempenho, onde está a vantagem?
[7] Comentário enviado por roxcorp em 02/11/2004 - 18:24h
Ola jllucca,
Fila nao eh FIFO? Quando removo um da fila ele tem que me entregar o primeiro que entrou e nao o ultimo. Isso que vc implementou acima eh uma pilha. FILO.
Abraco. Quaquer coisa me fala se eu estiver errado: tiago@roxcorp.com