Foro de elhacker.net

Programación => Programación C/C++ => Mensaje iniciado por: LeoJ24 en 15 Enero 2013, 05:18 am



Título: Duda con Punteros - C
Publicado por: LeoJ24 en 15 Enero 2013, 05:18 am
Buenassss.
Estoy medio estancado con los punteros en C.
Estaba leyendo un Curso de punteros en C y aparecio el sig ejemplo como demostracion de como funciona un puntero:
Código:
#include <stdio.h>

int main()
     {
     int numero;
     int *punt;

     numero = 43;
     punt = №
     printf( "Dirección de numero = %p, valor de numero = %i\n", &numero, numero );
     }

Ahora, aca se declaran dos variables de tipo int: numero y *punt y luego se les asigna un valor, a numero=43 y punt=№ <--- ESTO ES LO QUE NO ENTIENDO.
osea punt seria igual a numero (por el №) que a su vez es igual a 43? o punt es igual a la direccion de numero, cuyo valor es 43(el val de numero)? o como es?
Gracias de antemano.
Salu2


Título: Re: Duda con Punteros - C
Publicado por: Puntoinfinito en 19 Enero 2013, 12:04 pm
Me parece extraño, creo que lo que esta haciendo es declarar la dirección del puntero punt a el de la variable numero.


Título: Re: Duda con Punteros - C
Publicado por: x64core en 20 Enero 2013, 00:49 am
Buenassss.
Estoy medio estancado con los punteros en C.
Estaba leyendo un Curso de punteros en C y aparecio el sig ejemplo como demostracion de como funciona un puntero:
Código:
#include <stdio.h>

int main()
     {
     int numero;
     int *punt;

     numero = 43;
     punt = №
     printf( "Dirección de numero = %p, valor de numero = %i\n", &numero, numero );
     }

Ahora, aca se declaran dos variables de tipo int: numero y *punt y luego se les asigna un valor, a numero=43 y punt=№ <--- ESTO ES LO QUE NO ENTIENDO.
osea punt seria igual a numero (por el №) que a su vez es igual a 43? o punt es igual a la direccion de numero, cuyo valor es 43(el val de numero)? o como es?
Gracias de antemano.
Salu2
se declaran uno de tipo int y un puntero, son cosas distintas.
"*punt" seria el valor de la variable numero.

Me parece extraño, creo que lo que esta haciendo es declarar la dirección del puntero punt a el de la variable numero.
que carajos estas hablando?


Título: Re: Duda con Punteros - C
Publicado por: Puntoinfinito en 20 Enero 2013, 13:39 pm
He dicho lo mismo que has dicho tú.


Título: Re: Duda con Punteros - C
Publicado por: rir3760 en 20 Enero 2013, 18:02 pm
He dicho lo mismo que has dicho tú.
Honestamente y en buen plan, no.

Lo seria si tu comentario hubiera sido mas o menos así: Supongo la intención es almacenar en el puntero (la variable "punt") la dirección en memoria del objeto (la variable "numero") para así practicar el uso de los operadores "&" y "*" ...

Hay que tener cuidado con el lenguaje, si se utiliza "declarar" uno piensa en una declaración pero en el caso del programa original:
Código
  1. int numero;
  2. int *punt; /* Declaracion */
  3.  
  4. numero = 43;
  5. punt = &numero; /* Expresion */
El almacenamiento de la dirección en la variable "punt" no ocurre en su declaración, ocurre en una expresión donde se utiliza el operador de asignación "=".

Un saludo


Título: Re: Duda con Punteros - C
Publicado por: zonahurbana en 20 Enero 2013, 19:29 pm
rir3760, dicha declaración es además una definición; y la expresión, una sentencia. ¿Verdad?


Título: Re: Duda con Punteros - C
Publicado por: dato000 en 21 Enero 2013, 01:34 am
eso de № me parece que esta mal redactado pero es para indicar la variable.

Ya no hace falta decir más sobre a ese apuntador, apunta a una variable int, y se puede modificar mientras apunta a una memoria reservada, funciona muy bien para arreglos, así en lo básico puede que se vea confuso y hasta inutil, pero para estructuras, parametros, funciones, arreglos...en fin, sus usos son multiples