dramos21 Posted January 4, 2013 at 11:55 PM Report #489685 Posted January 4, 2013 at 11:55 PM (edited) 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; } Edited January 4, 2013 at 11:56 PM by dramos21
eatg75 Posted January 5, 2013 at 12:50 AM Report #489691 Posted January 5, 2013 at 12:50 AM 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.
apocsantos Posted January 5, 2013 at 12:59 AM Report #489694 Posted January 5, 2013 at 12:59 AM 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"
dramos21 Posted January 5, 2013 at 11:46 AM Author Report #489715 Posted January 5, 2013 at 11:46 AM Certo, consegui perceber pelos exemplos que deram. Obrigado!
Recommended Posts
Create an account or sign in to comment
You need to be a member in order to leave a comment
Create an account
Sign up for a new account in our community. It's easy!
Register a new accountSign in
Already have an account? Sign in here.
Sign In Now