Declarações de var *pmar; // declara pmar como apontador // como em float *pmar; Expressões - referência a var em expressão &sat significa endereço da variável sat como em pmar=&sat; *pmar significa conteúdo da var apontada por pmar como em *pmar+11.55; FUNÇÕES - declaração de função nome_func ( , ... ){ } (1) parâmetro x, sem *, entre parênteses na declaração de função F( x), exige x na chamada de F(), sem &. Uma cópia do valor de x é feita dentro do corpo de F(), cópia local à função. Na chamada de F(), ao invés de x pode ocorrer uma expressão cujo valor é calculado ANTES de ser copiado dentro do corpo de F(); int Lua( float x, int t){ // declaração de Lua() ............. ....... x+3.14+x/3.81 .........// expressão com x } main(){ float h, bk; int t2; ........................... h=Lua(1.96+bk/3.2, t2); // chamada de Lua(), expressão no lugar de x ................................... (2) parâmetro *x, com *, entre parênteses na declaração de função F( *x), exige &x na chamada de F(), com &. O endereço &x é "passado" para a função F(). int Lua( float *x, int t){ // declaração de Lua() ............. ....... *x+95.067......... .........// expressão com *x } main(){ int h; float bk; int t2; ........................... h=Lua( &bk, t2); // chamada de Lua(), &bk no lugar de *x ................................... (3) void F(...) na declaração da função F() exige que return NÃO ocorra no corpo de F() (4) char F(...) na declaração da função F() exige que ocorra pelo menos um return x; no corpo de F(), onde x seja uma expressão do tipo char. Analogamente para outros tipos de variável: int, float, double, etc.. char Lua( ... ){ // declaração de Lua() ............. if( ... ) return 'n'; // caractere n é retornado } main(){ char c2; ........................... c2= Lua( ... ); chamada de Lua(), um caractere é retornado por Lua() ...................................