Apostila C da UFMG - Universidade do Minho
Apostila C da UFMG - Universidade do Minho
Apostila C da UFMG - Universidade do Minho
Create successful ePaper yourself
Turn your PDF publications into a flip-book with our unique Google optimized e-Paper software.
Float int Precisão - resulta<strong>do</strong> arre<strong>do</strong>n<strong>da</strong><strong>do</strong><br />
Double float Precisão - resulta<strong>do</strong> arre<strong>do</strong>n<strong>da</strong><strong>do</strong><br />
long <strong>do</strong>uble <strong>do</strong>uble Precisão - resulta<strong>do</strong> arre<strong>do</strong>n<strong>da</strong><strong>do</strong><br />
10.4 - Modifica<strong>do</strong>res de Funções<br />
A forma geral de uma função é, como já foi visto,<br />
tipo_de_retorno nome_<strong>da</strong>_função (declaração_de_parâmetros)<br />
{<br />
corpo_<strong>da</strong>_função<br />
}<br />
Uma função pode aceitar um modifica<strong>do</strong>r de tipo. Este vai modificar o mo<strong>do</strong> como a função opera na passagem de<br />
parâmetros. A forma geral <strong>da</strong> função ficaria então:<br />
modifica<strong>do</strong>r_de_tipo tipo_de_retorno nome_<strong>da</strong>_função (declaração_de_parâmetros)<br />
{<br />
corpo_<strong>da</strong>_função<br />
}<br />
O nosso curso não abor<strong>da</strong> detalhes <strong>do</strong> funcionamento interno de funções. Para saber mais, consulte o manual <strong>do</strong> seu<br />
compila<strong>do</strong>r ou algum livro especializa<strong>do</strong>.<br />
10.4.1 - pascal<br />
Faz com que a função use a convenção de funções <strong>da</strong> linguagem de programação Pascal. Isto faz com que as funções<br />
sejam compatíveis com programas em Pascal.<br />
10.4.2 - cdecl<br />
O modifica<strong>do</strong>r de tipo cdecl faz com que a função use a convenção para funções <strong>do</strong> C. Raramente é usa<strong>do</strong> pois é o<br />
default. Pode -se pensar no cdecl como sen<strong>do</strong> o "inverso" <strong>do</strong> pascal.<br />
10.4.3 - interrupt<br />
Diz ao compila<strong>do</strong>r que a função em questão será usa<strong>da</strong> como um manipula<strong>do</strong>r de interrupções. Isto faz com que o<br />
compila<strong>do</strong>r preserve os registra<strong>do</strong>res <strong>da</strong> CPU antes e depois <strong>da</strong> chama<strong>da</strong> à função. Mais uma vez este tópico está fora<br />
<strong>do</strong> escopo <strong>do</strong> curso.<br />
10.5 - Ponteiros para Funções<br />
O C permite que acessemos variáveis e funções através de ponteiros! Esta é mais uma característica que mostra a<br />
força <strong>da</strong> linguagem de programação C. Podemos então fazer coisas como, por exemplo, passar uma função como<br />
argumento para outra função. Um ponteiro para uma função tem a seguinte declaração:<br />
tipo_de_retorno (*nome_<strong>do</strong>_ponteiro)();<br />
ou<br />
tipo_de_retorno (*nome_<strong>do</strong>_ponteiro)(declaração_de_parâmetros);<br />
Veja que não é obrigatório se declarar os parâmetros <strong>da</strong> função. Veja um exemplo <strong>do</strong> uso de ponteiros para funções:<br />
#include <br />
#include <br />
void PrintString (char *str,int (*func)());<br />
main (void)<br />
{<br />
char String [20]="Curso de C.";<br />
int (*p)();<br />
p=puts;<br />
PrintString (String,p);<br />
return 0;<br />
}<br />
Pág. 71