Ir para o conteúdo
  • Revista PROGRAMAR: Já está disponível a edição #60 da revista programar. Faz já o download aqui!

dramos21

[Resolvido] Duvida Básico Apontadores

Mensagens Recomendadas

dramos21

Boa noite pessoal,

Estou com uma dúvida neste exercicio em que tenho que dizer o que acontece aos valores de i e j quando usada a funcao proc.

quando é chamado na main proc(&i,&j) , o facto de a funcao estar iniciada com apontadores( int * a , int * b ) significa que o que vai ser chamado será ( * &i, * &j), ou seja, ( i, j ); ?

Apontadores é algo que me faz um bocado de confusão.

#include <stdio.h>
void proc( int * a, int * b )
{
  int c = *a;
  *a = *b;
  *b = c;
}
int main( void )
{
  int i = 7;
  int j = 9; 
  proc( &i, &j );
  return 0;
}

Editado por dramos21

Partilhar esta mensagem


Ligação para a mensagem
Partilhar noutros sites
eatg75

Oi boa noite.

Basicamente o que a tua funcao proc faz e trocar o valor de 2 variaveis recebidas como argumento. Por omissao quando passas uma variavel (seja ela de que tipo de dado for) ela e passada como valor, i.e. e criada uma copia da variavel e dentro da funcao em causa opera-se sob a copia e nao a variavel fora da funcao. Por vezes precisamos passar uma variavel a uma funcao e queremos que qualquer alteracao ao conteudo da variavel refleta ca fora, e ai e que entram os ponteiros!

Por exemplo:


Victarion seized the dusky woman by the wrist and pulled her to him.

Victarion - She will do it. Go pray to your red god. Light your fire, and tell me what you see.

Moqorro's dark eyes seemed to shine.

Moqorro - I see dragons.

Partilhar esta mensagem


Ligação para a mensagem
Partilhar noutros sites
apocsantos

Boa noite,

// & -> endereço de (o endereço de memória para onde um apontador aponta)
// * -> Apontado por (o valor armazenado no endereço do apontador)
#include <stdio.h>
void proc( int * a, int * b )
{
int c = *a; //c passa a ter o valor de ("apontado por *a)
*a = *b; //*a passa a ter o valor de ("apontado por *b)
*b = c; //*b passa a ter o valor de c
}
int main( void )
{
int i = 7;
int j = 9;
proc( &i, &j ); //envia para a função proc os valores de (apontador de i, e apontador de j) ou seja os endereços de memória onde estão armazenados os
// valores das variaveis i e j
return 0;
}

Penso que estja suficientemente perceptivel.

Cordiais cumprimentos,

Apocsantos


"A paciência é uma das coisas que se aprendeu na era do 48k" O respeito é como a escrita de código, uma vez perdido, dificilmente se retoma o habito"

Partilhar esta mensagem


Ligação para a mensagem
Partilhar noutros sites

Crie uma conta ou ligue-se para comentar

Só membros podem comentar

Criar nova conta

Registe para ter uma conta na nossa comunidade. É fácil!

Registar nova conta

Entra

Já tem conta? Inicie sessão aqui.

Entrar Agora

×

Aviso Sobre Cookies

Ao usar este site você aceita os nossos Termos de Uso e Política de Privacidade. Este site usa cookies para disponibilizar funcionalidades personalizadas. Para mais informações visite esta página.