FIFO ( push, pop, peek, reset, init )

Programação C em geral

Moderadores: 51, guest2003

FIFO ( push, pop, peek, reset, init )

Mensagempor andre_luis » 28 Fev 2007 17:18

Pessoal,

Estou trabalhando com um kit de funcoes de manipulacao de dados com acesso do tipo FIFO.
Só que a única função acima que eu não entendi a finalidade é Peek.
Alguem poderia explicar conceitualmente a finalidade desta função ?

Muito obrigado.
Avatar do usuário
andre_luis
Dword
 
Mensagens: 5447
Registrado em: 11 Out 2006 18:27
Localização: Brasil - RJ

Re: FIFO ( push, pop, peek, reset, init )

Mensagempor andre_luis » 01 Mar 2007 13:45

Aproveitando a oportunidade, tenho outra dúvida conceitual em 'C' :

Alguem sabe explicar o significado dos 2 asteriscos ( ** ) no protótipo da função abaixo ?

extern BOOL peekFifo##fcn_name( FIFO_##type * pfifo, DWORD dwPos, type** ppValue ) ;
Avatar do usuário
andre_luis
Dword
 
Mensagens: 5447
Registrado em: 11 Out 2006 18:27
Localização: Brasil - RJ

Mensagempor Maurício » 01 Mar 2007 22:12

Fala, André.

Dois asteriscos significa ponteiro de um ponteiro, ou seja, essa variável guarda o endereço de um outro ponteiro.

Em C, vc pode ter ponteiros de ponteiros de ponteiros de ponteiros de ponteiros, e por aí vai. :lol:
Basta aumentar a quantidade de asteriscos.

Na prática, não sei pra que serve porque eu ainda não precisei usar isso.
Codificado, ficaria dessa maneira:

Código: Selecionar todos
int a, *b, **c;
a = 10;
b = &a;
c = &b;
**c = 20;  // aqui, o valor da variável "a" será de 20, usando INDIREÇÃO


(???)

[]'s

RETI.
"Não leve a vida tão à sério, afinal, nenhum de nós sairá vivo, dela!"
Avatar do usuário
Maurício
Word
 
Mensagens: 678
Registrado em: 14 Out 2006 17:23
Localização: São Paulo - SP

Mensagempor Renie » 01 Mar 2007 23:22

Olá André!

Sendo repetitivo, não uso C ( nem em PC nem em uC, nunca usei, só
tento ajudar pelo que já ví em algum lugar ou por palpite/dedução! )

Já que o Mauríco respondeu a questão do "* *", que eu não saberia
mesmo, e ninguém respondeu ao PEEK, vai minha idéia:

PEEK é posicionar, em Basic do TK85, Sinclair, TRS80, Commodore, e outros que usavam PEEK na mesma época, PEEK era para ler um
determinado endereço de memória, em PASCAL, o PEEK é para
posicionar também, mas, não só para ler como para gravar, apenas
posicionava em um ponto de um arquivo, o comando seguinte poderia
ler ou gravar (neste caso era para arquivos).

Como não conheço a sintaxe do comando e seus parâmetros, o exposto
acima deve ajudar!
[]'s
Renie
-------------------------------------------------------------------------------------------------------------
Meu velho site com eletrônica praticamente parado http://www.reniemarquet.com
Nosso Blog http://artemadeiraevida.blogspot.com.br
Renie
Word
 
Mensagens: 732
Registrado em: 11 Out 2006 22:35
Localização: RJ - Niterói - Brasil

Mensagempor andre_luis » 02 Mar 2007 09:51

Obrigado maurício,

Realmente, o 'C' tem recursos fascinantes, e esse é mais um que acabei de aprender

Obrigado Renie,

Realmente, o que eu suspetava era que esse Peek fosse uma leitura, sem alteração no estado da pilha.
Avatar do usuário
andre_luis
Dword
 
Mensagens: 5447
Registrado em: 11 Out 2006 18:27
Localização: Brasil - RJ

Mensagempor ivan » 02 Mar 2007 19:19

Imagina a seguinte situação:

int *fa = &funcaoA(parmsFunc){....};
int *fb = &funcaoB(parmsFunc){....};
int *fc = &funcaoC(parmsFunc){....};

int **ptrMatrix[3];
ptrMatrix[0] = &fa;
ptrMatrix[1] = &fb;
ptrMatrix[2] = &fc;

Caso vc receba uma variavel com valores entre 0 e 2 e queira fazer chamadas de função sem fazer if's ou switch's, por exemplo, mantendo o seu pgm modular.

OBS: A sintaxe não é essa mas tô sem saco de escrever certo. O importante é o conceito.
"A mente que se abre a uma nova idéia jamais volta ao seu tamanho original." (Albert Einstein).
Avatar do usuário
ivan
Word
 
Mensagens: 618
Registrado em: 12 Out 2006 21:27

Mensagempor andre_luis » 05 Mar 2007 09:37

ivan escreveu: Caso vc receba uma variavel com valores entre 0 e 2 e queira fazer chamadas de função sem fazer if's ou switch's, por exemplo, mantendo o seu pgm modular.


Sensacional !!

Mas isso é padrão ANSI ? Pois eu creio que nem todos os compiladores possuem a capacidade de usar ponteiro para funcoes. Segundo li no Help do CCS, acho que ele não faz isso para uC PIC's, ou estou enganado ?

Brigado....

+++
Avatar do usuário
andre_luis
Dword
 
Mensagens: 5447
Registrado em: 11 Out 2006 18:27
Localização: Brasil - RJ

Mensagempor ivan » 05 Mar 2007 19:46

padrão ANSI!
"A mente que se abre a uma nova idéia jamais volta ao seu tamanho original." (Albert Einstein).
Avatar do usuário
ivan
Word
 
Mensagens: 618
Registrado em: 12 Out 2006 21:27


Voltar para Visual C++/C/C++/C#

Quem está online

Usuários navegando neste fórum: Nenhum usuário registrado e 1 visitante

x