Ponteiros void na linguagem C (parte 2)

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.

[ Hits: 59.848 ]

Por: Ricardo Rodrigues Lucca em 09/06/2004 | Blog: http://aventurasdeumdevop.blogspot.com.br/


Introdução



Bom, pra você estar lendo isso é primordial que já tenha lido a primeira parte do artigo:
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:
  1. Aloca-se espaço para um int que é referenciado como o nome B.
  2. Aloca-se um ponteiro do tipo int chamado de C.
  3. B recebe 9, isto é, o espaço de memória que B referência passará a conter 9.
  4. C que antes apontava para um lugar desconhecido receberá endereço da variável B.
  5. 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?"

Você, um cara muito esperto, responde :

- "Conheço um artigo de um tal jllucca no endereço http://www.vivaolinux.com.br".

Assim, Zildo, nosso ponteiro, recebe o endereço e vai correndo acessá-lo em algum browser...

    Próxima página

Páginas do artigo
   1. Introdução
   2. Atribuição
   3. Teoria do void
   4. Fila
   5. Concluindo
Outros artigos deste autor

Analogia: X-Window como um sistema operacional

Como posso recuperar o boot loader?

Uma pequena análise do Gentoo Linux

Funcionamento da memória

Introdução à linguagem C - Parte III

Leitura recomendada

Tutorial OpenGL

Criando um sistema operacional com ASM e C++

Programando em Qt

Criando aplicativos para o Mac OS X no GNU/Linux

Tutorial OpenGL v2.0

  
Comentários
[1] Comentário enviado por lorenzi em 10/06/2004 - 00:26h

muito bom o artigo para quem ja programa ou que esta comecando a usar a linguagem C.

[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;

o que acha sobre o assunto ?

--
Robson

[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",

[]'s

[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.

[]'s

[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

Tiago

[8] Comentário enviado por jllucca em 07/11/2004 - 20:22h

Olá,

Estou me comunicando com o roxcorp por email,

mas o programa da pagina quatro está correto. Acabei de testa-lo aqui e ele realiza um FIFO e não um FILO como ele alega.

A lista: 0 1 2 3 4

Ao ser removido dois elementos ficou: 2 3 4

Em FILO, seria: 0 1 2
Mas, não aconteceu. :-)

Como disse, estou falando por email com ele para vermos esse impasse.

[]'s

[9] Comentário enviado por kernel_sys em 10/10/2005 - 13:40h

Muito bom artigo mesmo , parabens


Contribuir com comentário




Patrocínio

Site hospedado pelo provedor RedeHost.
Linux banner

Destaques

Artigos

Dicas

Tópicos

Top 10 do mês

Scripts