adotando o seguinte modelo:

            int *v = 0;

temos:
        |++++|
 v |_k0_|_#__|

aqui, 'v' � uma vari�vel que mora no endere�o de mem�ria 'k0' e cujo conte�do iniical 
� o endere�o de mem�ria 'NULL', que significa um endere�o de mem�ria inv�lido 
(simbolicamente '#')

quando se faz, p.ex.,

         v = new int (-12);

temos:

        |++++|            |+++++|
 v |_k0_|_k1_|       |_k1_|_-12_|

agora, o conte�do de 'v' � o endere�o de mem�ria 'k0', e no endere�o de mem�ria 'k0' 
est� o conte�do '-12'

e qdo se faz:

               int i = *v;

temos:

        |++++|            |+++++|
 v |_k0_|_k1_|       |_k1_|_-12_|

        |++++|
 i |_k3_|_-12|

ou seja, 'i' � uma vari�vel que mora no endere�o de mem�ria 'k3' e cujo conte�do � 
'-12', valor este acessado pelo operador '*' aplicado a vari�vel 'v', i.e., '*v' 
acessa o conte�do do endere�o de mem�ria que � o conte�do de 'v'


e, como no seu exemplo, vc faz:

         int *v = 0;
         int x = -4;

temos:

        |++++|
 v |_k0_|_#__|

        |++++|
 x |_k2_|_-3_|

ou seja, 'x' � uma vari�vel, e como tal mora no endere�o 'k2' e seu conte�do � um 
inteiro

e em seguida:

      v = &x;

temos:

        |++++|
 v |_k0_|_k2_|

        |++++|
 x |_k2_|_-3_|

ou seja, a vari�vel 'v', que mora no endere�o 'k0', agora tem o conte�do 'k2', que � o 
endere�o de mem�ria onde mora a vari�vel 'x', cujo conte�do � '-3', endere�o este 
obtido pelo operado '&' aplicado a vari�vel 'x'


espero q agora vc consiga entender a sa�da do seu pgm!!

por fim, uma dica:

int main(int x) {
.
.
.
x = 5;
.
.
.
}

atribuir valor a um par�metro passado por valor n�o tem sentido... e provavelmente 
essa f� n�o se chama 'main'

[]s

---------- Original Message ----------------------------------
From: [EMAIL PROTECTED]
Date: Mon, 1 Oct 2001 17:44:06 -0300

>Ola,
>
>Eu estou com a seguinte duvida em ponteiros em C. =]
>
>Suponha que eu fa�a o seguinte:
>
>#include <stdio.h>
>
>int main( int x){
> int *b;

>
> x=5;
> b=&x
>
> printf("%d  %d  %d",b,*b,&b);
>
> return(0);
>}
>
>Se eu rodar esse humilde programa ele me retorna-ra:
>
>./programa
>2147482148  5  2147482136
>
>Eu gostaria de saber o q representa cada valor ??
>
>Na verdade, eu nao consegui entender a diferen�a entre usar so a variavel
>ou *variavel ou &variavel.
>
>Eu entendi que:
>
>&variavel    =>  Lugar onde ela esta na memoria
>
>*variavel    =>  Valor atribuido a ela.
>
>variavel     =>  Nao fa�o nem ideia.
>
>Alias, eu to perdidao. Se algum puder fazer um desenho sei la explicando,
>como fica na memoria, sei la! QUalquer ajuda eh bem vinda!
>
>
>Obrigado.
>
>[ ]'s
>
>
>
>___________________________________________________________
>
>http://www.zipmail.com.br O e-mail que vai aonde voc� est�.
>
>
>
>
>
>

--
Rodrigo Canellas
www.EverSystems.com.br
--


Assinantes em 03/10/2001: 2355
Mensagens recebidas desde 07/01/1999: 135172
Historico e [des]cadastramento: http://linux-br.conectiva.com.br
Assuntos administrativos e problemas com a lista:
            mailto:[EMAIL PROTECTED]

Responder a