Академический Документы
Профессиональный Документы
Культура Документы
Introdução
Agora que já estudamos muitos tópicos de grande importância em nosso curso, vamos explorar mais dois
itens da linguagem C, tais como:
Protótipos de funções
Ponteiros
Protótipos de funções:
Para melhor entendermos o conceito de protótipos de funções da linguagem C, vamos estudar um simples
exemplo de programa em C, acompanhe:
/*********************************************************************
*********
Centro de Tecnologia Microgenios
Proprama exemplo
Objetivo: apresentar o conceito: protótipo de função
**********************************************************************
*********/
Repare que a função principal do programa, ou seja, a função main() encontra-se no final do nosso
programa enquanto as demais funções encontra-se no início. Com certeza você estará se perguntando:
porque o programa é construido dessa maneira? porque não colocamos a função main() no início do
programa e as demais subrotinas (funções) no final do programa?.
Em um programa em C, não devemos chamar uma função antes do compilador saber que esta função
existe. Por esse motivo, no momento da compilação, faz necessário que as funções (subrotinas) do
programa sejam colocadas no início do programa, para que o compilador a reconheça.
/*********************************************************************
*********
Centro de Tecnologia Microgenios
Proprama exemplo
Objetivo: apresentar o conceito: protótipo de função
**********************************************************************
*********/
//********************** função main()
*****************************************
void main() {
trisb = 0;
aciona_led();
gera_delay();
while(1);
}
//************************** subrotina aciona led
******************************
void aciona_led(){
portb = 1;
}
Para corrigirmos este problema, podemos utilizar os protótipos de funções no topo do nosso programa,
cujo objetivo é informar ao pré-compilador do mikroC quais são as funções de subrotinas do nosso
programa, dessa maneira podemos colocar essas funções antes ou depois da função main(), ou então
espalhada em módulos ou outros arquivos linkados com nosso programa.
Para exemplificarmos os protótipos de funções, vamos corrigir nosso programa utilizando esse recurso:
/*********************************************************************
*********
Centro de Tecnologia Microgenios
Proprama exemplo
Objetivo: apresentar o conceito: protótipo de função
**********************************************************************
*********/
Os protótipos de funções são de grande utilidade, uma vez que eles ajudam, evitando cometermos erros
na codificação dos programas, escrevendo códigos com parâmetros inadequados para uma função.
Ponteiro
Os ponteiros são tipos de dados muito utilizado na linguagem C, podemos utilizar seus recursos em
aplicações complexas e de alta flexibilidade. Resumidamente podemos dizer que um ponteiro nada mais é
do que uma variável utilizada para guardar o endereço de outra variável, dizemos que um ponteiro é um
apontador de outra variável.
Para definirmos uma variável do tipo ponteiro, utilizamos o simbolo ' * ' (asterisco). Acompanhe o
exemplo abaixo:
int *teste
char *soma
O primeiro declara uma variável teste do tipo int como ponteiro, e o segundo declara
uma variável soma do tipo char como ponteiro.
Em C os ponteiros também tem tipos, pois ao declararmos como ponteiros, devemos
informar seu tipo de variável que irá apontar.
Repare que os dois ponteiros criados acima não foram inicializados, isso significa que
eles podem estar apontando para qualquer endereço da memória. Para não cometermos
nenhum erro na utilização de ponteiros, sempre é recomendado no momento da criação
de um ponteiro inicializa-los.
A linguagem C nos oferece o apontador (&), que é responsável por indicar a posição
específica de uma variável na memória.
variavel_soma = &teste;
int *endereco_soma;
int contador;
contador = 120;
endereco_soma = &contador;
*endereco_soma = 50;
Definimos uma variável ponteiro do tipo int chamada endereço_soma e uma variável do
tipo int chamada contador. Na linha de programa seguinte, é atribuido a variável
contador o valor 120. Em seguida na variável ponteiro endereco_soma é atribuido o
ENDEREÇO de memória da variável contador. Dizemos agora que a a variável
endereco_soma aponta para a variável contador. Em seguida, atribui-se o valor 50 ao
endereço apontado pela variável endereco_soma. Como resultado, a variável contador
passará a armazenar o valor 50.
Acompanhe o exemplo:
No código acima declaramos uma variável do tipo int chamada soma e a inicializamos
com o valor 100; declaramos também um ponteiro do tipo int chamado apontador. A
expressão, &soma, atribui ao ponteiro o endereço da variável soma. O ponteiro
apontador, passa a apontar para a variável soma. Apartir de agora, podemos alterar o
valor da variável soma através do ponteiro apontador. Quando atribuimos ao ponteiro
apontador o endereço da variável soma, significa dizer que a variável apontador é a
própria variável soma. Podemos então alterar o valor da variável soma através do
ponteiro apontador. Para isso, fariamos da seguinte maneira:
*apontador = 20;