14.03.2015 Views

Apostila C da UFMG - Universidade do Minho

Apostila C da UFMG - Universidade do Minho

Apostila C da UFMG - Universidade do Minho

SHOW MORE
SHOW LESS

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

Hooray! Your file is uploaded and ready to be published.

Saved successfully!

Ooh no, something went wrong!