Escolar Documentos
Profissional Documentos
Cultura Documentos
Curso: Informática
Profa. Evaldinolia Gilbertoni Moreira
Email: evaldinolia@acad.ifma.edu.br
Roteiro
1. Ponteiros
2. Funções passagem por valor e por referência
Passagem de
Parâmetros
Existem duas formas de passagem de parâmetros quando se chama uma
função:
por valor e por referência
Os endereços das variáveis que são
passadas para a função são copiados
nos parâmetros formais
Chamada da
função
Passagem de Parâmetros por Valor
O valor da variável
local soma é retornado
para a função
chamadora
Passagem
de
Parâmetro por Valor Função main
Função soma_dobro
5*2=10
5 3
x y a 5
a 10
res = soma_dobro(5,3)
3 b
6 soma
x
5 y
16
b
3 res 16
3*2=6 return soma
Passagem de Parâmetros por Referência
Os parâmetros
passados para a
função são os
endereços das variáveis
xey
Passagem de Parâmetros por Referência
Os parâmetros são
PONTEIROS
Ponteiros são variáveis
que designam
endereços de memória
As variáveis do tipo
ponteiro são declaradas
para um determinado tipo
Ponteiros
Declaração
SINTAXE
tipoDoPonteiro *nomeDaVariável;
✓ É o asterisco (*) que faz o compilador saber
que aquela variável não vai guardar um valor
mas
sim um endereço para aquele tipo especificado
Ponteiros
Usando Ponteiros
▪ Para atribuir um valor a um ponteiro recém-criado podemos igualá-lo a um valor de memória.
pt = &count;
Declaração da variável
ponteiro para int.
int count =
Atribuição do endereço da
10; int *pt; variável count ao ponteiro.
✓ O ponteiro deve ser inicializado (apontado para
algum lugar conhecido) antes de ser usado.
Ponteiros
Operador de Endereços (&)
O & é um
operador
unário que devolve o endereço de memória do seu
operando.
m = &count;
Ponteiros
Operador de Acesso Indireto (*)
O * é um
operador
unário que devolve o valor da variável localizada
no endereço que o segue.
m = &count;
q = *m;
*a == conteúdo de x
*b == conteúdo de y
Passagem de Parâmetros por Referência
x 10
10
800
6
y 6
16 soma 16
res soma
return
Passagem de Parâmetros
Passagem de parâmetros (dois tipos):
▪ por valor
▪ por referência (passar o endereço da variável)
A função troca
int temp; }
int main()
&y)
temp=x; {
void troca (int &x,
int x=y; int a=5,b=8;
y=temp;
{
printf("%d %d", a,
b); }
troca(a,b);
Estratégia de C
Em C, toda passagem de parâmetros é portanto feita por valor!
x=y;
y=temp;
}
Exemplo 1 em c
A função troca (passagem por
valor)
chamada da função
void troca (int x, int y)
{ int main(){
int temp; int a=5,b=8;
temp=x;
troca(a,b);/* passagem por
valor */
}
printf("%d %d", a, b);
*y=temp;
}
Exemplo 2
A função troca (passagem por
referência) chamada da função
Apontando para
uma variável
int
19
Declaração de
5DF1
variável:
▪ Nome do Identificador
Idade&Idade
Apontando para
uma variável
int idade;
…
idade = 19;
Tipo de dado
idade int
Conteúdo
19
Endereço (memória)
5DF1
Nome do identificador
19
2F09
5DF1
Nome do identificador
Tipo de dado
Nome do identificador
Endereço (memória)
Conteúdo
Endereço (memória)
ptrIdade
Apontando para
uma variável
int * ptrIdade;
int idade;
…
5DF1
ptrIdade =
ptrIdade
&idade;
Conteúdo
*ptrIdade = 19; int *
Endereço (memória)
idade 19
Apontando para
uma variável
int * ptrIdade;
int idade;
…
Idade
ptrIdade =
&idade;
*ptrIdade = 19; 19
PtrIdade
int *